我正在尝试使用 Android 发布者 API 上传 apk,但在从 python 库和邮递员命中时运行时出现问题。
由于 python 包 oauth2client 已弃用,请切换到 google.oauth2
我们正在从 json 文件中获取凭据:
credentials = google.oauth2.service_account.Credentials.from_service_account_file('key.json',
scopes=['https://www.googleapis.com/auth/androidpublisher'])
service = build('androidpublisher', 'v3', credentials=credentials)
从 json 文件获取凭证后,我们使用 edits().insert()
edit_request = service.edits().insert(body={}, packageName=self._packagename)
result = edit_request.execute()
输出:
INFO:root:<HttpError 403 when requesting https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.android.sample/edits?alt=json returned "The caller does not have permission". Details: "The caller does not have permission">
从同一个 json 文件生成令牌:
credentials = google.oauth2.service_account.Credentials.from_service_account_file('key.json',
scopes=['https://www.googleapis.com/auth/androidpublisher'])
service = build('androidpublisher', 'v3', credentials=credentials)
request = google.auth.transport.requests.Request()
credentials.refresh(request)
logging.info(credentials.token)
使用 Bearer TO API 复制令牌授权
API: https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.android.sample/edits?alt=json
输出:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Google Play Android Developer API 已在 Google Cloud 项目中启用。还需要启用其他API吗?
您通常不需要启用其他 API 来实现上传 APK 或通过 Android Publisher API 管理编辑等基本功能。只需在您的项目中启用 Google Play Android Developer API 就足以使用该 API 并将必要的角色分配给您的服务帐户。如果您最近创建了服务帐户,则角色分配可能需要长达 24 小时才能完全传播。
您还需要验证 Postman 使用的服务帐户是否具有与 Python 脚本中使用的角色相同的角色。
您使用的服务帐户缺乏必要的权限,因此您可能需要尝试授予“Android Publisher Editor”角色以进行测试。
这里有一些可能有用的资源
https://developers.google.com/identity/protocols/oauth2/service-account#python