微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 Google Cloud sdk 访问 Google Play Android Developer API

如何解决通过 Google Cloud sdk 访问 Google Play Android Developer API

我正在尝试使用 Google Play Developer Publishing API 设置应用更新的优先级。 根据文档,我需要调用 androidpublisher.googleapis.com 服务。 我在 Linux 设备中安装了 Cloud SDK 以进行服务调用。此外,我已执行所有步骤并能够使用 gcloud init 初始化 sdk。

但是当我尝试使用以下命令执行 Edits

curl -X POST -H "授权:承载 [oauth2_client_id]" -H "内容类型:应用程序/json" https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.xyz.abc/edits -d'{"id": "20","expiryTimeSeconds": "180}'

我得到以下错误-

{“错误”:{ “代码”:401, "message": "请求的身份验证凭据无效。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效 身份验证凭据。看 https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED" } }

我已经在请求中提供了 oauth 客户端 ID!如何解决这个问题?如果需要 OAuth 2 访问令牌,我将如何使用 gcloud?

更新

根据答案,我在授权内发送了令牌并出现错误-

{
  "error": {
    "code": 403,"message": "Request had insufficient authentication scopes.","status": "PERMISSION_DENIED"
  }
}

为什么我仍然收到错误

更新2

现在我可以使用以下 URL 获取具有所需范围的代码/令牌(不确定它是否是访问令牌)- https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri={your redirect url}&client_id={您的客户 ID})

以下是我执行但无法使其工作的步骤的详细信息-

1.打开终端并使用命令移动到google cloud sdk bin文件夹- cd /home/bhuvnesh.varma/Downloads/google-cloud-sdk/bin

2.运行命令 - gcloud init 选择配置,帐户和项目后,我收到消息- 您的 Google Cloud SDK 已配置并可以使用!

3.我在浏览器上点击这个 URL 替换客户端 id 并重定向 url- https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri={your redirect url}&client_id={您的客户 ID})

我收到了消息-

"请复制此代码,切换到您的应用程序并将其粘贴到那里: 4/AX4XfWgUvVTE0VknkW0R35rUOsNZ7IVmMCebiV3yyyKxP4c7y0jjZxxcF0TQg"

4.然后我使用生成的令牌/代码在终端上执行编辑命令-

curl -X POST -H "授权:承载 4/AX4XfWgUvVTE0VknkW0R35rUOsNZ7IVmMCebiV3yyyKxP4c7y0jjZxxcF0TQg" -H "内容类型:应用程序/json" https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.xyz.abc/edits -d'{"id": "20","expiryTimeSeconds": "180}'

我仍然收到以下错误- { “错误”: { “代码”:401, "message": "请求的身份验证凭据无效。需要 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。请参阅 https://developers.google.com/identity/sign-in/web/devconsole-project.",“状态”:“未认证” } }

解决方法

Bearer 值应该是 OAuth 访问令牌。

我不熟悉这个 API。它是否代表特定(个人)用户运行?推论:它是否需要用户特定的信息?如果是这样,您应该能够使用您用于 gcloud auth login 的帐户进行身份验证。您可以使用以下方法获取访问令牌:

TOKEN=$(gcloud auth print-access-token)

curl ... --header "Authorization: Bearer ${TOKEN}" ...

如果没有(那不起作用),您应该创建一个服务帐户来验证呼叫。此过程涉及更多,因为您还需要为该帐户创建一个密钥并通过 gcloud auth activate-service-account 使用它进行身份验证。然后您可以继续上面的 gcloud auth print-access-token

注意 使用 Google 的客户端 SDK 与其服务交互几乎总是最佳做法。使用这些,身份验证会为您处理 - 大部分是透明的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。