Google Oauth没有获得刷新令牌

时间:2015-04-24 22:57:36

标签: javascript google-oauth

我正在尝试获取刷新令牌。 我在谷歌文档中读到了它。 现在,我正在使用脱机访问类型以及approval_prompt:"强制" 但我没有得到刷新令牌作为回应。 我得不到我做错了什么。

我有以下HTML代码:

<input type="submit" class="btn btn-info" value="Google" onclick="authorizeWithGoogle()" />

Javascript代码:

 var cid = 'XXXXX';
 var apik = 'XXXXX';
 var scopes = 'https://www.google.com/m8/feeds';

 function authorizeWithGoogle() {
     gapi.client.setApiKey(apik); 
     gapi.auth.authorize({ client_id: cid, scope: scopes,  accesstype: "offline"   ,approval_prompt: "force"}, handleAuthResult);
 }

 function handleAuthResult(authResult) {
     delete authResult['g-oauth-window'];
 if (authResult && !authResult.error) {
    console.log(JSON.stringify(authResult));      
 }
}
你能帮我吗?

2 个答案:

答案 0 :(得分:3)

您不希望请求刷新令牌,因为这会否定OAuth的安全性。只应在服务器上请求/存储刷新令牌。在继续之前,您可能需要退一步并检查您对OAuth的理解。试图在不了解OAuth的情况下实施OAuth。

对于浏览器客户端,只要您需要新的访问令牌(例如大约每小时),就应该继续调用gapi.auth.authorize。第一次通话后,您可以设置immediate=true,这将禁止任何用户界面。

答案 1 :(得分:0)

首先,你做了一个拼写错误,它缺少下划线:它是access_type,而不是accesstype

然后,除了通过access_typeapproval_prompt之外,还需要确保您的测试用户删除了针对您的应用的授权。使用您的测试帐户(而不是您的应用帐户)登录Google,然后转到Account Permissions并从列表中删除您的应用。