Oauth 2.0 初始授权后不返回刷新令牌

Oauth 2.0 初始授权后不返回刷新令牌,oauth-2.0,google-api,google-drive-api,google-oauth,Oauth 2.0,Google Api,Google Drive Api,Google Oauth,这是问题的后续行动 答案是“刷新令牌仅在用户首次授权时提供。” 取消应用的权限并再次尝试授权后,不会返回刷新令牌。我得到的是: { “访问令牌”:“XXXX..”, “令牌类型”:“承载者”, “expires_in”:3600, “id_令牌”:“XXXX…” } 其他人建议使用access\u type=offline,但是,根据描述,在以下情况下使用脱机访问: “当用户不在场时,应用程序需要访问谷歌API 在浏览器上“ 我可不是这样 获取刷新令牌的正确方法是什么 只有在设置了access\

这是问题的后续行动

答案是“刷新令牌仅在用户首次授权时提供。”

取消应用的权限并再次尝试授权后,不会返回刷新令牌。我得到的是:

{
“访问令牌”:“XXXX..”,
“令牌类型”:“承载者”,
“expires_in”:3600,
“id_令牌”:“XXXX…”
}

其他人建议使用
access\u type=offline
,但是,根据描述,在以下情况下使用脱机访问:

“当用户不在场时,应用程序需要访问谷歌API 在浏览器上“

我可不是这样


获取刷新令牌的正确方法是什么

只有在设置了access\u type=offline时,才能获得刷新令牌。对于如何处理此问题,您有两种选择:

  • 不要使用
    access\u type=offline
    。您的访问令牌将有效1小时。访问令牌过期后,再次提示用户进行身份验证。他们需要再次进行整个OAuth舞蹈,以便您可以获得新的访问令牌

  • 使用
    access\u type=offline
    ,以便您可以。如果愿意,在用户注销后,您可以


  • 只有在设置了access_type=offline时,才能获得刷新令牌。对于如何处理此问题,您有两种选择:

  • 不要使用
    access\u type=offline
    。您的访问令牌将有效1小时。访问令牌过期后,再次提示用户进行身份验证。他们需要再次进行整个OAuth舞蹈,以便您可以获得新的访问令牌

  • 使用
    access\u type=offline
    ,以便您可以。如果愿意,在用户注销后,您可以


  • 每次重新加载应用程序页面时,都会刷新访问令牌,或者您可以说刷新令牌。为此,您应该使用以下方法,但首先需要进行身份验证

      gapi.auth.getToken().access_token;
    
    我也通过以下方式做同样的事情

       var accessToken = gapi.auth.getToken().access_token;
        var xhr = new XMLHttpRequest();
        xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
    
    您可以使用此选项来避免“刷新令牌未返回”问题


    谢谢

    每次重新加载应用程序页面时,都会刷新访问令牌,或者您可以说刷新令牌。为此,您应该使用以下内容,但首先需要进行身份验证

      gapi.auth.getToken().access_token;
    
    我也通过以下方式做同样的事情

       var accessToken = gapi.auth.getToken().access_token;
        var xhr = new XMLHttpRequest();
        xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
    
    您可以使用此选项来避免“刷新令牌未返回”问题


    谢谢

    在测试时,我取消了应用程序的访问,用户确实通过了身份验证屏幕。但是,我仍然没有获取刷新令牌。只有在设置了access\u type=offline时,您才能获取刷新令牌。在测试此项时,我将撤销应用程序的访问,并且用户将通过身份验证屏幕。但是,我仍然没有获取刷新令牌。只有在设置了access\u type=offline的情况下才能获取刷新令牌。这是使用web服务器流还是javascript客户端流?这是一个服务器完成的。具体来说,我使用的是opauth库,然后@jay的答案适用。只有在以下情况下,您才能获得刷新令牌:(a)您请求了一个访问类型为脱机的令牌;(b)用户专门授予了该令牌(即初始授予或批准提示=force),这是使用web服务器流还是javascript客户端流?这是一个服务器完成的。具体来说,我使用的是opauth库,然后@jay的答案适用。只有在以下情况下,您才能获得刷新令牌:(a)您已请求一个具有访问权限的令牌,\u type=offline;(b)用户专门授予它(即初始授予或批准\u prompt=force)这是客户端Javascript方式这是客户端Javascript方式