获取我的谷歌服务帐户的授权令牌密钥

Posted

技术标签:

【中文标题】获取我的谷歌服务帐户的授权令牌密钥【英文标题】:Getting authorization token-key for my google service account 【发布时间】:2021-10-18 05:10:10 【问题描述】:

我实际上想使用此 api 回复我的 google play 应用程序的 cmets: https://developers.google.com/android-publisher/reply-to-reviews#gaining_access 但是在这里,它要我输入auth_token。首先,我将服务帐户添加到我的 google play 中。之后,我创建了一个密钥,并为我的密钥下载了 json 文件。使用这个 json 文件我试图获得身份验证。令牌,但此代码的输出告诉我凭据无效,令牌为“无”。我想解决这个问题。谢谢。

from google.oauth2 import service_account
import googleapiclient.discovery

SCOPES = ['https://www.googleapis.com/auth/cloud-platform',
          'https://oauth2.googleapis.com/token',
          'https://accounts.google.com/o/oauth2/auth',
          'https://www.googleapis.com/oauth2/v1/certs',
          'https://www.googleapis.com/robot/v1/metadata/x509/myusername.gserviceaccount.com']
SERVICE_ACCOUNT_FILE = 'service.json'

credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)

print(credentials._token_uri)
print(dir(credentials))
print(credentials.valid)
print(credentials.token)

我研究的资源:

https://developers.google.com/identity/protocols/oauth2#serviceaccount https://developers.google.com/identity/protocols/oauth2/service-account#python_1 https://developers.google.com/android-publisher/reply-to-reviews#gaining_access


注意:人们也会像这样发送他们的 API 请求:

service = build('drive', 'v3', credentials=credentials)

例如上面的代码是为谷歌驱动器发送 api 请求。我怎样才能达到我的目的?例如,我想使用“build”访问 google play api。

【问题讨论】:

【参考方案1】:

构建方法的关键在于,它首先获取 API,然后获取您要访问的 API 版本,然后是您的凭据。

service = build('drive', 'v3', credentials=credentials)

如果您查看Discovery services,您会找到所有 google api 的列表

android发布者的入口如下

 
      "kind": "discovery#directoryItem",
      "id": "androidpublisher:v3",
      "name": "androidpublisher",
      "version": "v3",
      "title": "Google Play Android Developer API",
      "description": "Lets Android application developers access their Google Play accounts.",
      "discoveryRestUrl": "https://androidpublisher.googleapis.com/$discovery/rest?version=v3",
      "icons": 
        "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
        "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
      ,
      "documentationLink": "https://developers.google.com/android-publisher",
      "preferred": true
    ,

这意味着以下内容应该是您要查找的内容。

service = build('androidpublisher', 'v3', credentials=credentials)

【讨论】:

非常感谢先生 :)

以上是关于获取我的谷歌服务帐户的授权令牌密钥的主要内容,如果未能解决你的问题,请参考以下文章

使用从客户端收到的谷歌授权码在服务器端 javascript (nodejs) 上获取访问令牌

没有浏览器的谷歌驱动器登录api

如何从PHP脚本访问我的谷歌驱动器,无需手动授权

我的谷歌地图 api 密钥在 python 中不起作用,尽管它可以在 swift 中运行

从开发者控制台中的谷歌游戏服务中删除链接的应用程序

无法在跨客户端谷歌 oauth2.0 中交换访问令牌和刷新令牌的授权码