【发布时间】:2020-09-20 00:16:11
【问题描述】:
我正在尝试使用 Azure DevOps 中的 Chrome Web Store API 上传和发布我的 Chrome 扩展。我一直在参考谷歌官方guide,但问题是它现在看起来已经过时了。我在这一步失败了
要创建客户端 ID 和客户端密码,请单击创建新客户端 ID,选择已安装的应用程序,然后在已安装的应用程序类型下选择其他。
执行此操作时,我在应用程序类型下拉列表中看不到“其他”选项。
我尝试了以下方法:
- 选择 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 发出 curl 请求以获取刷新令牌时,我没有收到 refresh 令牌,我只得到这个:
{
"access_token": "",
"expires_in": 3599,
"scope": "https://www.googleapis.com/auth/chromewebstore",
"token_type": "Bearer"
}
- 选择 Chrome 应用程序作为应用程序类型
这里发生的情况与之前的尝试几乎相同,除了我不必在请求访问代码中替换重定向 URI,但我也没有此应用程序类型的客户端密码,所以我省略了它.无论如何,它会产生没有刷新令牌的相同响应。
- 当我在开发控制台中启用 Chrome Web Store API 并尝试创建新凭据时,它建议创建 API 密钥而不是客户 ID。但看起来这个 API 并不能真正使用这个密钥,我尝试将它作为查询参数发送,作为标题,我总是得到带有“需要登录”消息的 401 结果。但是,当我尝试在标头中发送带有(无效)令牌的请求时,我会得到有意义的响应(类似于 Invalid Credentials)。
显然,我确实需要访问令牌才能使用 Chrome Web Store API,但如果没有刷新令牌,我需要手动授权我的权限,这是不可接受的,因为我需要在我的 CI/CD 管道中使用。 Google 似乎删除了仅为此类应用程序类型生成此信息的选项。
那么,问题是,我怎样才能获得刷新令牌才能真正能够持续部署 chrome 扩展?
【问题讨论】: