从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.
当用户第二次登录时,要获取丢失的刷新令牌,则无需再次同意:
这就是发生的问题。
答案 0 :(得分:0)
TBH,我不清楚您的问题。但是,我确定您必须处理两个不同的令牌。由于是OAuth,因此一经成功进行用户身份验证,您首先会从Google获取访问令牌。
您应该使用该访问令牌从Google获取用户信息。但是默认情况下,访问令牌具有一些到期时间,超过该时间,用户必须重新授权您的应用程序。我怀疑这就是您的情况。
您可以通过使用刷新令牌来更新访问令牌,当您征得用户的同意后,该令牌将得到。
您可以在我写的这篇博客文章https://www.syncwithtech.org/authorizing-google-apis/
中获得详细信息。我希望这可以对您有所帮助。