【问题标题】:Authorizing service account with oauth2 using python for Google Play Developer API使用 oauth2 为 Google Play Developer API 授权服务帐户
【发布时间】:2018-10-07 03:24:59
【问题描述】:

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

我很茫然。关于如何做我想要实现的目标有很多相互矛盾的信息。耻辱,谷歌!耻辱!至少可以说,缺少文档。 (我的意思是他们有很好的信息,只是散落在各处)。

我很想对此提出任何建议。我不知所措,无法通过上述错误消息。

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

【问题讨论】:

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


    【解决方案1】:

    我在这个链接here的帮助下找到了这个问题的原因。

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

    另外,在半无关的注释中,当我这样做时,我很难理解是否需要通过我的服务帐户获取和使用 access_token 并以这种方式授权。我专注于这个想法太久了,这就是问题所在。 最后,使用我的服务帐户并使用 JWT 授权就足够了。您确实不需要需要对访问令牌执行任何操作或刷新它们,如上面的代码所示授权工作。我想我会将这个添加到答案中,因为如果我知道这一点,因为我在上述错误消息上走错了太久的时间,它会节省我几个小时。

    【讨论】:

    • 此解决方案适用于旧产品还是仅适用于新产品?
    • @BernardoDuarte 我不知道您所说的“旧产品”是什么意思,但这是我所做的唯一尝试,所以很遗憾我可能没有答案。我只能推荐使用链接您的项目后创建的应用内产品。
    • 对不起,我在那里表达得不够好,但我的意思是“旧产品”是你在这里提到的那个:“我在链接我的项目之前创建了我的应用内购买."。我想知道的是,你能从这个特定的产品中获取信息吗?
    • @BernardoDuarte 啊,我想我知道你的意思了。这是我以前没有卖过的全新产品(在应用程序中)。因此,还没有与之相关的信息。所以这可能对你没有帮助。
    • 您好,再次,我认为很高兴分享我毕竟成功调用了 API。出于某种原因,我不知道它是否有效,我所要做的就是等待至少 2 天,让它明白一切都很好;/。另外,感谢您的快速回答;D
    猜你喜欢
    • 2013-08-21
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多