使用App Engine默认凭证调用Google Play API遇ACCESS_TOKEN_SCOPE_INSUFFICIENT错误
问题原因及解决方案
核心原因
你遇到的403权限不足错误,本质是默认应用凭证没有包含Android Publisher API所需的OAuth2权限范围:
- 使用服务账号密钥文件时,你显式调用了
createScoped(AndroidPublisherScopes.ANDROIDPUBLISHER),给凭证附加了访问Android Publisher API的必要权限范围。 - 但用
GoogleCredentials.getApplicationDefault()获取默认凭证时,它不会自动带上这个特定scope,导致生成的访问令牌权限不足,触发ACCESS_TOKEN_SCOPE_INSUFFICIENT错误。
修复方案
只需在获取默认凭证后,同样调用createScoped方法添加所需的权限范围,修改后的代码如下:
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(AndroidPublisherScopes.ANDROIDPUBLISHER); AndroidPublisher pub = new AndroidPublisher.Builder( GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials) ).setApplicationName(appName).build();
额外验证点
快速确认App Engine默认服务账号(通常为[项目ID]@appspot.gserviceaccount.com)已在Google Play控制台「用户与权限」中添加,且拥有「应用权限」下的订阅管理相关权限(你用密钥时能正常工作,此权限大概率已配置正确)。
内容的提问来源于stack exchange,提问作者Mike Dee
相关产品推荐
相关产品推荐

