这是问题Not receiving Google OAuth refresh token
的后续问题答案是“只有在用户的第一次授权时才提供refresh_token。”
撤销应用程序的权限并尝试再次授权后,不会返回刷新令牌。我得到的是:
{
"access_token" : "XXXX..",
"token_type" : "Bearer",
"expires_in" : 3600,
"id_token" : "XXXX..."
}
其他人建议使用access_type=offline
但是,根据说明,如果符合以下情况,则使用离线访问:
“当用户不在时,应用程序需要访问Google API 在浏览器“
对我来说并非如此。
获取刷新令牌的正确方法是什么?
答案 0 :(得分:3)
如果设置了access_type = offline,则只获取刷新令牌。您有两种选择如何处理:
请勿使用access_type=offline
。您的访问令牌将持续1小时。访问令牌过期后,重新提示用户再次进行身份验证。他们需要再次进行整个OAuth舞蹈,以便获得新的访问令牌。
使用access_type=offline
以便您get a new access tokens via the refresh token。如果您愿意,在用户退出后,您可以revoke the tokens。
答案 1 :(得分:1)
每次当您重新加载应用程序页面时,访问令牌都会刷新,或者您可以为此目的说出刷新令牌,您应该使用以下但首先需要身份验证
gapi.auth.getToken().access_token;
我也通过以下方式做同样的事情
var accessToken = gapi.auth.getToken().access_token;
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
您可以使用它来避免您的问题“不返回刷新令牌”。
谢谢!!