Я использую библиотеку google-api- python -client для загрузки приложений в Google Playstore. Все работало хорошо до сегодняшнего дня. Я не изменил свой скрипт загрузки, но теперь я получаю сообщение об ошибке:
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/androidpublisher/v3/applications/[packageName]/edits/[editId]/tracks/internal?alt=json returned
**"Track names in request path and request body must match."**
Это мой скрипт загрузки:
from apiclient.discovery import build
import httplib2
from oauth2client import client
from oauth2client.service_account import ServiceAccountCredentials
import json
import mimetypes
package_name = '...'
keyfile_content = '...'
apk_file = '...'
release_name = '...'
track = 'internal'
mimetypes.add_type("application/octet-stream", ".apk")
mimetypes.add_type("application/octet-stream", ".aab")
keyfile_dict = json.loads(keyfile_content)
credentials = ServiceAccountCredentials.from_json_keyfile_dict(keyfile_dict, 'https://www.googleapis.com/auth/androidpublisher')
http = httplib2.Http()
http = credentials.authorize(http)
service = build('androidpublisher', 'v3', http=http)
edit_request = service.edits().insert(body={}, packageName=package_name)
result = edit_request.execute()
edit_id = result['id']
apk_response = service.edits().apks().upload(
editId=edit_id,
packageName=package_name,
media_body=apk_file).execute()
print('Version code %d has been uploaded but not yet committed' % apk_response['versionCode'])
if track:
track_response = service.edits().tracks().update(
editId=edit_id,
track=track,
packageName=package_name,
body={u'releases': [{
u'name': release_name,
u'versionCodes': [str(apk_response['versionCode'])],
u'status': u'completed',
}]}).execute()
print('Track %s is set with releases: %s' % (
track_response['track'], str(track_response['releases'])))
else:
print('No track specified')
commit_request = service.edits().commit(
editId=edit_id, packageName=package_name).execute()
print('Edit "%s" has been committed' % commit_request['id'])
Я использую google-api- python - клиент 1.7.11.
Я не смог найти ничего об ошибке онлайн. У кого-нибудь есть идея?
Обновление
Благодаря ответу 1016 * от @Silvio я мог заставить свой скрипт снова работать, добавив трек а также к телу запроса:
from apiclient.discovery import build
import httplib2
from oauth2client import client
from oauth2client.service_account import ServiceAccountCredentials
import json
import mimetypes
package_name = '...'
keyfile_content = '...'
apk_file = '...'
release_name = '...'
track = 'internal'
mimetypes.add_type("application/octet-stream", ".apk")
mimetypes.add_type("application/octet-stream", ".aab")
keyfile_dict = json.loads(keyfile_content)
credentials = ServiceAccountCredentials.from_json_keyfile_dict(keyfile_dict, 'https://www.googleapis.com/auth/androidpublisher')
http = httplib2.Http()
http = credentials.authorize(http)
service = build('androidpublisher', 'v3', http=http)
edit_request = service.edits().insert(body={}, packageName=package_name)
result = edit_request.execute()
edit_id = result['id']
apk_response = service.edits().apks().upload(
editId=edit_id,
packageName=package_name,
media_body=apk_file).execute()
print('Version code %d has been uploaded but not yet committed' % apk_response['versionCode'])
if track:
track_response = service.edits().tracks().update(
editId=edit_id,
track=track,
packageName=package_name,
body={u'track': track,
u'releases': [{
u'name': release_name,
u'versionCodes': [str(apk_response['versionCode'])],
u'status': u'completed',
}]}).execute()
print('Track %s is set with releases: %s' % (
track_response['track'], str(track_response['releases'])))
else:
print('No track specified')
commit_request = service.edits().commit(
editId=edit_id, packageName=package_name).execute()
print('Edit "%s" has been committed' % commit_request['id'])