我正在尝试获取刷新令牌。 我在谷歌文档中读到了它。 现在,我正在使用脱机访问类型以及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));
}
}
你能帮我吗?
答案 0 :(得分:3)
您不希望请求刷新令牌,因为这会否定OAuth的安全性。只应在服务器上请求/存储刷新令牌。在继续之前,您可能需要退一步并检查您对OAuth的理解。试图在不了解OAuth的情况下实施OAuth。
对于浏览器客户端,只要您需要新的访问令牌(例如大约每小时),就应该继续调用gapi.auth.authorize。第一次通话后,您可以设置immediate=true
,这将禁止任何用户界面。
答案 1 :(得分:0)
首先,你做了一个拼写错误,它缺少下划线:它是access_type
,而不是accesstype
。
然后,除了通过access_type
和approval_prompt
之外,还需要确保您的测试用户删除了针对您的应用的授权。使用您的测试帐户(而不是您的应用帐户)登录Google,然后转到Account Permissions并从列表中删除您的应用。