Google身份验证总是询问授权,尽管提示没有任何价值

时间:2018-08-29 17:30:08

标签: node.js oauth google-api google-oauth

从Google OAuth连接用户后,如果该用户希望在需要选择其Google帐户的下一个会话期间重新连接,则会再次请求许可。

根据documentation,负责授权请求的参数提示的行为如下:

  

如果未指定任何值并且用户先前未授权   访问,然后向用户显示一个同意屏幕。

因此,用户不必重新排列其同意书(通过验证,该应用程序已存在我的授权中)。

唯一能想到的答案是关于这个问题的答案:login with google always asks user consent

因为我也没有安全的HTTP在本地工作,但他认为存在cookie策略,而事实并非如此。

代码生成URL

/**
 * Create a new OAuth2Client with the credentials previously loads
 */
private getOAuth2() : OAuth2Client {
    return new OAuth2(
        this.credentials.client_secret,
        this.credentials.client_id,
        this.credentials.redirect_uris[0]
    );
}

/**
 * Create connection URL for the given scopes
 * @param scopes
 */
public url(scopes: Array<string>) : string {
    return this.client.generateAuthUrl({
            access_type: "offline",
            scope: scopes
    });
}



// The scope used to generate URL is 'https://www.googleapis.com/auth/youtube.readonly'

// this.client refer to a client which is load by getOAuth2
// and use only for the generation of URL's.

当用户第二次登录时,要获取丢失的刷新令牌,则无需再次同意:

enter image description here

这就是发生的问题。

1 个答案:

答案 0 :(得分:0)

TBH,我不清楚您的问题。但是,我确定您必须处理两个不同的令牌。由于是OAuth,因此一经成功进行用户身份验证,您首先会从Google获取访问令牌。

您应该使用该访问令牌从Google获取用户信息。但是默认情况下,访问令牌具有一些到期时间,超过该时间,用户必须重新授权您的应用程序。我怀疑这就是您的情况。

您可以通过使用刷新令牌来更新访问令牌,当您征得用户的同意后,该令牌将得到。

您可以在我写的这篇博客文章https://www.syncwithtech.org/authorizing-google-apis/

中获得详细信息。

我希望这可以对您有所帮助。