使用python for Google Play Developer API使用oauth2授权服务帐户

使用python for Google Play Developer API使用oauth2授权服务帐户,python,google-api-client,google-oauth,google-play-developer-api,Python,Google Api Client,Google Oauth,Google Play Developer Api,我正试图通过google客户端api python库使用oauth2授权一个服务帐户。我最终想要验证应用内购买 这是我的代码: SCOPES = ['https://www.googleapis.com/auth/androidpublisher'] SERVICE_ACCOUNT_FILE = 'google.api.json' credentials = service_account.Credentials.from_service_account_file(SERVI

我正试图通过google客户端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

这个代币(不是访问代币,而是应用内购买代币)来自我个人谷歌账户的测试购买(就在最近谷歌终于开放了开发者账户进行测试购买!)。我测试购买的sku是我将要出售给应用程序用户的实际sku

我不知所措。关于如何实现我的目标,有很多相互矛盾的信息。不好意思,谷歌!真丢脸!至少可以说,这些文件是缺乏的。(我的意思是他们有很好的信息,只是到处都是)

我希望得到任何关于这方面的建议。我不知所措,无法通过上面的错误消息


编辑我的代码在上面是正确的;请参阅我的答案以了解真正的原因。

我通过此链接找到了此问题的原因

在链接我的项目之前,我已经创建了我的应用内购买。创建新的应用内购买解决了问题。另一方面:这个错误消息肯定是误导性的


还有一个半无关的问题,当我这样做的时候,我很难理解我是否需要在我的服务帐户中获取并使用访问令牌,并以这种方式授权。我把注意力集中在这个问题上太久了,认为这就是问题所在最后,使用我的服务帐户,并通过JWT进行授权就足够了。您需要而不是使用access令牌进行任何操作或刷新它们,如上面代码所示,授权才能工作。我想我会将此添加到答案中,因为如果我知道这一点,我会节省很多时间,因为我在上面的错误消息中走错了太久。

此解决方案适用于旧产品还是仅适用于新产品?@Bernardoduart我不知道“旧产品”是什么意思,但这是我做的唯一尝试,所以很遗憾,我可能没有答案给你。我只能推荐使用链接项目后创建的应用内产品。很抱歉,我没有在那里很好地表达自己的观点,但我的意思是“旧产品”就是您在这里提到的:“我在链接项目之前创建了应用内购买。”。我想知道的是,你能从这种特殊的产品中获取信息吗?@Bernardoduart啊,我想我知道你的意思。这是一款全新的产品(应用内项目),我以前从未销售过。所以目前还没有相关信息。所以这可能对你没有帮助。您好,我想再次告诉大家,我成功地调用了API。由于某种原因,我不知道它是否有效,我所要做的就是等待至少两天,让它明白一切都很好;/。另外,谢谢你的快速回答;D