无法获得Chrome Web Store API的刷新令牌来发布Chrome扩展程序

问题描述 投票:0回答:1

我正在尝试使用Azure DevOps中的Chrome Web Store API上传和发布我的Chrome扩展程序。我一直在参考官方的Google guide,但问题是现在看起来已经过时了。我在步骤上失败了

要创建客户端ID和客户端密钥,请单击“创建新客户端ID”,选择“已安装的应用程序”,然后在“已安装的应用程序类型”下选择“其他”。

[执行此操作时,在“应用程序类型”下拉列表中看不到“其他”选项。Application Types

我尝试了以下操作:

  1. 选择Web应用程序作为应用程序类型

使用此链接,我无法获得访问代码:

[https://accounts.google.com/o/oauth2/auth?response_type=code&scope=https://www.googleapis.com/auth/chromewebstore&client_id= $ CLIENT_ID&redirect_uri = urn:ietf:wg:oauth:2.0:oob

导致出现“错误400:redirect_uri_mismatch”。如果我在客户端ID设置中添加了授权的重定向URI(例如“ localhost”),并在上面的URL中替换了“ urn:ietf:wg:oauth:2.0:oob”,则可以调用授权过程并获取URL中的代码。但是,当我尝试向https://accounts.google.com/o/oauth2/token发出卷曲请求以获取刷新令牌时,我没有收到refresh令牌,我只会得到此:

{
  "access_token": "",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/chromewebstore",
  "token_type": "Bearer"
}
  1. 选择Chrome应用作为应用类型

这里与上一次尝试几乎一样,只是我不必在请求访问代码中替换重定向URI,但是我也没有此应用程序类型的Client Secret,因此我将其省略。无论如何,它会导致没有刷新令牌的相同响应。

  1. [当我在开发人员控制台中启用Chrome Web Store API并尝试创建新凭据时,建议创建API密钥而不是Cliend ID。但是,看起来该API不能真正与此密钥一起使用,我尝试将其作为查询参数作为标头发送,并且我总是通过“需要登录”消息获得401结果。但是,当我尝试在标头中发送带有(无效)令牌的请求时,会收到有意义的响应(类似“无效凭据”)。

显然,我确实需要具有访问令牌才能与Chrome Web Store API一起使用,但是没有刷新令牌,我需要手动授权权限,这是不可接受的,因为我需要在CI / CD管道中使用它。看来Google删除了仅针对此类应用程序类型生成此信息的选项。

所以,问题是,如何获得刷新令牌以真正能够连续部署chrome扩展?

google-api google-oauth2
1个回答
0
投票

好,所以这里的技巧是在用于获取访问代码(不是令牌)的请求中添加两个参数:

&access_type = offline&approval_prompt = force

因此链接应该是:

[https://accounts.google.com/o/oauth2/auth?response_type=code&scope=https://www.googleapis.com/auth/chromewebstore&client_id= $ CLIENT_ID&redirect_uri = urn:ietf:wg:oauth:2.0:oob&access_type = offline&approval_prompt = force

Google应该在更新文档方面做得更好。

© www.soinside.com 2019 - 2024. All rights reserved.