我的应用需要使用Google Plus注册用户,然后显示用户的个人资料数据。当用户在Google Plus上编辑他们的个人资料并再次访问我的应用程序时,该应用程序需要显示更新的数据。因此,应用程序需要存储access_token和refresh_token以供将来使用。我想使用google的js api管理所有这些,而不需要任何服务器端google-api-client。
问题是我无法使用js api检索refresh_token。我已经设置了一个jsfiddle here。谷歌加相关代码如下:
$('#signInButton').click(function () {
attributes = {
'accesstype': 'offline',
'clientid': "260932337012-1gdbsh3p7oknkjmeaa7m9q7e6nhhgd9c.apps.googleusercontent.com",
'scope': 'email profile',
'cookiepolicy': 'single_host_origin',
'approvalprompt': 'force',
'callback': signInCallback
};
gapi.auth.signIn(attributes);
});
function signInCallback(authResult) {
alert(authResult.request_token);
}
尽管将accessstype设置为offline,但不会返回refresh_token
。我在这里做错了什么?
提前致谢。
答案 0 :(得分:0)
使用基于javascript浏览器的应用程序纯粹使用客户端流程来获取刷新令牌是不可能的。使用implicit
授权类型的OAuth 2.0时,这是一项安全功能。
刷新令牌仅用于服务器端或混合流。
只使用javascript,您只需再次登录用户,或者如果他们尚未退出,您可以使用'immediate': true
参数在后台对其进行身份验证,即不使用其他UI弹出窗口进行身份验证