使用python为Google Play开发者API使用oauth2授权服务帐户

时间:2018-10-07 03:24:59

标签: python google-api-client google-oauth2 google-play-developer-api

我正在尝试通过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。

我很茫然。关于如何做我想达到的目标,有太多相互矛盾的信息。真可惜,谷歌!耻辱!至少可以说,文档不足。 (我是说他们掌握的信息很好,只是分散在各处)。

我希望对此有任何建议。我很茫然,无法摆脱上面的错误消息。

编辑我的代码在上面是正确的;看看我的答案是什么原因。

1 个答案:

答案 0 :(得分:0)

借助此链接here,我找到了造成此问题的原因。

在链接我的项目之前,我已经创建了应用内购买。创建新的应用内购买解决了该问题。另外请注意:该错误消息肯定会引起误解。

另外,在进行半无关紧要的说明时,我很难理解我是否需要在我的服务帐户中获取和使用 access_token 并以此方式进行授权。我在这个问题上花了太长时间了。 最后,使用我的服务帐户并通过JWT授权就足够了。您不需要不需要对访问令牌进行任何操作或刷新它们,如上面的代码所示。授权工作。我以为我可以将此添加到答案中,因为如果我在上述错误消息中走错了路太久的话,这将为我节省很多时间。