#python #android #automation #google-play-services #google-reviews
#python #Android #автоматизация #google-play-сервисы #google-отзывы
Вопрос:
У меня есть учетная запись службы и закрытый ключ, сгенерированный для учетной записи в приложении.
testxyz.json — содержит закрытый ключ и информацию об учетной записи службы.
Вот сценарий:
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient.discovery import build
import ssl
import json
ssl._create_default_https_context = ssl._create_unverified_context
credentials = ServiceAccountCredentials.from_json_keyfile_name('testxyz.json',scopes=['https://www.googleapis.com/auth/androidpublisher'])
http = httplib2.Http()
http = credentials.authorize(http)
service = build('androidpublisher', 'v3', http=http)
print(service)
package_name = "xtestx"
reviews_resource = service.reviews()
print(reviews_resource)
reviews_page = reviews_resource.list(packageName=package_name,maxResults=100).execute()
reviews_list = reviews_page["reviews"]
infinite_loop_canary = 100
while "tokenPagination" in reviews_page:
reviews_page = reviews_resource.list(packageName=package_name,maxResults=100).execute()
token=reviews_page["tokenPagination"]["nextPageToken"],
maxResults=100).execute()
reviews_list.extend(reviews_page["reviews"])
infinite_loop_canary -= 1
if infinite_loop_canary < 0:
break
Строка в скрипте — reviews_resource.list(packageName=package_name,maxResults= 100).execute() — выдает «У вызывающего нет разрешения»
Я не совсем уверен, что нужно сделать. Любая помощь приветствуется.
Ответ №1:
Я публикую ответ здесь, поскольку мне потребовалось довольно много времени, чтобы разобраться в этом, возможно, это поможет кому-то еще.
Что вам нужно перед:
- Учетная запись службы из https://console.developers.google.com
- Закрытый ключ для SA. (используется файл .p12)
- В Play Console нам нужно предоставить доступ к этому SA из учетной записи разработчика -> Доступ к API.
- Как только мы нажмем «Предоставить доступ» (с шага 3), у нас появится диалоговое окно разрешений — включите «Отвечать на отзывы» для необходимых приложений.
from apiclient.discovery import build import httplib2 from oauth2client import client from oauth2client.service_account import ServiceAccountCredentials SERVICE_ACCOUNT_EMAIL = ('associated_service_email_address_goes_here') #this is the private key file key = 'xxx.p12' scope='https://www.googleapis.com/auth/androidpublisher' credentials= ServiceAccountCredentials.from_p12_keyfile(SERVICE_ACCOUNT_EMAIL, key, scopes=[scope]) package_name = "xtestx" try: http = httplib2.Http() http = credentials.authorize(http) service = build('androidpublisher', 'v3', http=http) reviews_resource = service.reviews() print(reviews_resource) reviews_page = reviews_resource.list(packageName=package_name,maxResults=100).execute() reviews_list = reviews_page["reviews"] except Exception as e: ...
Разрешения создали проблему у меня.