我正在开发Google Chrome扩展程序并使用Boris Smus Oauth 2.0库。
验证交换完成,但是,我遇到的问题是即使我在授权期间指定access_type = offline,我在交换期间也从未收到过refresh_token,只是access_token,expires_in和token_type。
我的预感是,这是因为在我的API访问设置中,OAuth2被设置为Web应用程序,而Web应用程序未被授予离线访问权限。有谁知道这是正确的还是能够让它起作用?
提前致谢。
答案 0 :(得分:2)
对于Google的OAuth客户端,您需要在参数中使用提示=同意才能每次都获得refresh_token,
作为Google,请勿为后续登录提供refresh_token。 仅在用户首次允许访问时提供refresh_token 。
答案 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。