2015-04-10 6 views
1

Я пытаюсь обновить хром-приложение программно, используя Chrome Web Store Publishing API.Использовать в API публикации магазина Chrome с учетной записью службы OAuth2

Мне нужно использовать метод проверки подлинности сервера и сервера, и для моего проекта создайте учетную запись службы oauth2 на Google developer console. И скачал учетные данные как key.p12.

Затем я попытаюсь использовать Google API Client for Python. Несмотря на то, что API не поддерживает Интернет-магазин Chrome, он должен иметь возможность использовать его части.

Я создал небольшой скрипт в Python, чтобы попытаться получить список моих Chrome элементов Web Store:

"""Creates a connection to Google Chrome Webstore Publisher API.""" 

from apiclient.discovery import build 
import httplib2 
from oauth2client import client 

import os 

SERVICE_ACCOUNT_EMAIL = (
    '[email protected]') 

def getservice(): 
    # get relative path to p12 key 
    dir = os.path.dirname(__file__) 
    filename = os.path.join(dir, 'key.p12') 

    # Load the key in PKCS 12 format that you downloaded from the Google APIs 
    # Console when you created your Service account. 
    f = file(filename, 'rb') 
    key = f.read() 
    f.close() 

    # Create an httplib2.Http object to handle our HTTP requests and authorize it 
    # with the Credentials. Note that the first parameter, service_account_name, 
    # is the Email address created for the Service account. It must be the email 
    # address associated with the key that was created. 
    credentials = client.SignedJwtAssertionCredentials(
     SERVICE_ACCOUNT_EMAIL, 
     key, 
     scope='https://www.googleapis.com/auth/chromewebstore.readonly') 
    http = httplib2.Http() 
    http = credentials.authorize(http) 

    response = http.request('https://www.googleapis.com/chromewebstore/v1.1/items/[___my_chrome_webstore_app_id___]') 

    print response 

Даже если аутентификации в направлении https://www.googleapis.com/auth/chromewebstore.readonly является успешных, результаты ответа в ошибка.

Мои вопросы:

  1. Имеет ли 403 происходят, так как учетная запись службы не имеет доступ ко моему Google элементы хрома Webstore?
  2. Возможно ли аутентификация и использование API Chrome Store без использования моей личной учетной записи, которая публикуется в интернет-магазине (но подключенная учетная запись службы)?
  3. Как я могу получить действительный authToken для использования в API веб-магазина Chrome без проверки подлинности пользователя через flow.

ответ

2

На самом деле были проблемы с моим скриптом.

  1. Пользователь

    а) Чтобы получить учетную запись службы действовать от имени пользователя, который опубликовал товар в Интернет-магазин Chrome, необходимо добавить параметр к югу, при создании учетных данных:

    учетные данные = client.SignedJwtAssertionCredentials ( SERVICE_ACCOUNT_EMAIL, ключ, область применения = 'https://www.googleapis.com/auth/chromewebstore.readonly', sub='[email protected] ')

    б) Если пользователь входит в домен Служб Google, то Chrome Web Store Опубликовать API должен быть предоставлен доступ к доменным широких пользователей, в Google Apps Dashboard > Security > Extended Settings > Manage API access

  2. The API call to get an item имеет необходимый параметр запроса projection со значениями draft или published. Он указан как необязательный в documentation, но это действительно необходимо.

С этими двумя изменениями API может использоваться с объектом http. Спасибо всем, кто помог мне найти решение и поддержку Google, указав необходимый параметр.

2
  1. ли 403 происходит, так как учетная запись службы не имеет доступ ко моему Google элементы хрома Webstore?

Возможно. Учетная запись службы составляет , а не собственный аккаунт Google.

  1. Возможно ли аутентификация и использование API Chrome Store без использования моей личной учетной записи, которая публикуется в интернет-магазине (но подключенной учетной записи службы)?

Dunno. Извините, не знакомы с API Chrome Store. Вы можете использовать Oauth Playground для тестирования возможностей без необходимости писать код.

  1. Как я могу получить действительный authToken для использования в API веб-магазина Chrome без проверки подлинности пользователя через поток.

Авторизуясь один раз с «автономным доступом», который вернет вам токен обновления. Вы можете использовать это в любое время, даже если он не вошел в систему, чтобы запросить токен доступа. В стороне, нет такой вещи, как «authtoken». Существует код авторизации, и есть токен доступа. В вашем случае это токен доступа, который вас интересует.

+0

Спасибо, у вас есть ссылка на площадку Oauth? – Rias

+1

https://developers.google.com/oauthplayground/ – pinoyyid

+0

Спасибо @pinoyyid за то, что указали мне на Игровое поле, отличный инструмент! К сожалению, я до сих пор не могу получить доступ к веб-сайту Chrome с игровой площадкой. Я попытался сделать авторизацию потока и дал доступ к моей личной учетной записи разработчика (той, с которой я опубликовал приложение Chrome chrome). Я получаю код аутентификации и токен доступа для области https://www.googleapis.com/auth/chromewebstore, но если я попробую токен по адресу https://www.googleapis.com/chromewebstore/v1.1/ items/Я все еще получаю 403. Я использую это руководство для создания заголовков: https://developer.chrome.com/webstore/using_webstore_api#usingtheapi – Rias