我正在尝试通过google-client-api python库使用oauth2授权服务帐户。我最终想要验证应用内购买。
这是我的代码:
SCOPES = ['https://www.googleapis.com/auth/androidpublisher']
SERVICE_ACCOUNT_FILE = 'google.api.json'
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
http = credentials.authorize(httplib2.Http())
service = build(
serviceName='androidpublisher',
version='v2',
credentials=credentials
)
req = service.purchases().products().get(
packageName=package,
productId=product,
token=token
)
response = req.execute()
我收到此消息:
...returned "The project id used to call the Google Play Developer API has not been linked in the Google Play Developer Console."
我的项目ID是绝对链接的;我的服务帐户在Google Play控制台中的绝对连接是具有该项目正确权限的用户。当我记录以上代码时,我将获得链接的项目ID。
令牌(不是访问令牌,而是应用程序内购买令牌)来自我个人Google帐户的测试购买(最近,Google终于为测试购买打开了开发者的帐户!)。我的测试购买的sku是我将出售给应用程序用户的实际sku。
我很茫然。关于如何做我想达到的目标,有太多相互矛盾的信息。真可惜,谷歌!耻辱!至少可以说,文档不足。 (我是说他们掌握的信息很好,只是分散在各处)。
我希望对此有任何建议。我很茫然,无法摆脱上面的错误消息。
编辑:我的代码在上面是正确的;看看我的答案是什么原因。
答案 0 :(得分:0)
借助此链接here,我找到了造成此问题的原因。
在链接我的项目之前,我已经创建了应用内购买。创建新的应用内购买解决了该问题。另外请注意:该错误消息肯定会引起误解。
另外,在进行半无关紧要的说明时,我很难理解我是否需要在我的服务帐户中获取和使用 access_token 并以此方式进行授权。我在这个问题上花了太长时间了。 最后,使用我的服务帐户并通过JWT授权就足够了。您不需要不需要对访问令牌进行任何操作或刷新它们,如上面的代码所示。授权工作。我以为我可以将此添加到答案中,因为如果我在上述错误消息中走错了路太久的话,这将为我节省很多时间。