OAuth 2.0响应中没有refresh_token

时间:2012-08-05 20:13:11

标签: google-chrome-extension oauth-2.0

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

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

我的预感是,这是因为在我的API访问设置中,OAuth2被设置为Web应用程序,而Web应用程序未被授予离线访问权限。有谁知道这是正确的还是能够让它起作用?

提前致谢。

3 个答案:

答案 0 :(得分:2)

对于Google的OAuth客户端,您需要在参数中使用提示=同意才能每次都获得refresh_token,

作为Google,请勿为后续登录提供refresh_token。 仅在用户首次允许访问时提供refresh_token

有关详情,请查看此https://stackoverflow.com/a/10857806/5752311

答案 1 :(得分:1)

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

答案 2 :(得分:0)

根据OAuth 2.0 specification,refresh_token是可选的,隐式授权和客户端凭据授权不支持。

由于您提到access_type = offline,我猜您使用的是Facebook API。 Boris Smus document章变化OAERT IMPLEMENTATIONS也表示Facebook不会返回刷新令牌。

另请阅读this question