1

我正在开发一个 Google Chrome 扩展程序,并且正在使用 Boris Smus Oauth 2.0 库。

身份验证交换完成,但是,我遇到的问题是,即使我在授权期间指定了 access_type=offline,但在交换期间我从未收到 refresh_token,只有 access_token、expires_in 和 token_type。

我的直觉是,这是因为在我的 API 访问设置中,OAuth2 被设置为 Web 应用程序,并且 Web 应用程序没有被授予离线访问权限。有谁知道这是否正确或是否能够使其工作?

提前致谢。

4

3 回答 3

2

对于 Google 的 OAuth 客户端,您需要在参数中包含prompt=consent才能每次获取 refresh_token,

作为 Google,请勿为后续登录提供 refresh_token。只有在用户第一次允许访问时才提供 refresh_token

有关更多信息,请查看此https://stackoverflow.com/a/10857806/5752311

于 2017-10-16T07:04:30.380 回答
1

我设法通过在授权网址中添加可选的approval_prompt=force 参数来解决问题。默认情况下,approval_prompt 设置为“自动”。当它设置为“强制”时,刷新令牌会在令牌交换期间出现。

于 2012-08-07T04:57:47.960 回答
0

根据OAuth 2.0 规范,refresh_token 是可选的,在隐式授权和客户端凭据授权中不受支持。

既然你提到了 access_type=offline,我猜你正在使用 Facebook API。Boris Smus 文档章节VARYING OAUTH IMPLEMENTATIONS 也表示 Facebook 不会返回刷新令牌。

也请阅读这个问题

于 2012-08-07T04:54:21.650 回答