Google Oauth 未获得刷新令牌
Google Oauth not getting refresh token
我正在尝试获取刷新令牌。
我在 google 文档中读到了它。
现在,我正在离线使用 accesstype 以及 approval_prompt: "force"
但我没有得到刷新令牌作为回应。
我不明白我做错了什么。
我有以下 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));
}
}
你能帮帮我吗
首先,您打错了,它缺少下划线:它是 access_type
,而不是 accesstype
。
然后,除了要通过 access_type
和 approval_prompt
,您还需要确保您的测试用户移除了对您应用的授权。使用您的测试帐户(不是您的应用程序帐户)登录 Google,然后转到 Account Permissions 并从列表中删除您的应用程序。
您不希望请求刷新令牌,因为这会破坏 OAuth 的安全性。刷新令牌在服务器上只能是 requested/stored。在继续之前,您可能想退后一步并回顾您对 OAuth 的理解。在不了解 OAuth 的情况下尝试实施 OAuth 是一个皮塔饼。
对于浏览器客户端,只要您需要新的访问令牌(例如大约每小时一次),您就应该继续调用 gapi.auth.authorize。第一次调用后,您可以设置 immediate=true
,这将抑制任何 UI。
我正在尝试获取刷新令牌。 我在 google 文档中读到了它。 现在,我正在离线使用 accesstype 以及 approval_prompt: "force" 但我没有得到刷新令牌作为回应。 我不明白我做错了什么。
我有以下 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));
}
}
你能帮帮我吗
首先,您打错了,它缺少下划线:它是 access_type
,而不是 accesstype
。
然后,除了要通过 access_type
和 approval_prompt
,您还需要确保您的测试用户移除了对您应用的授权。使用您的测试帐户(不是您的应用程序帐户)登录 Google,然后转到 Account Permissions 并从列表中删除您的应用程序。
您不希望请求刷新令牌,因为这会破坏 OAuth 的安全性。刷新令牌在服务器上只能是 requested/stored。在继续之前,您可能想退后一步并回顾您对 OAuth 的理解。在不了解 OAuth 的情况下尝试实施 OAuth 是一个皮塔饼。
对于浏览器客户端,只要您需要新的访问令牌(例如大约每小时一次),您就应该继续调用 gapi.auth.authorize。第一次调用后,您可以设置 immediate=true
,这将抑制任何 UI。