问题是oauth2登录使用https://github.com/golang/oauth2/图书馆
Github工作得很好,在我批准后不会显示批准提示。但谷歌oauth2在每次登录时都会显示批准提示。
下面的url是golangoauth2生成的身份验证url。我没有发现问题。
https://accounts.google.com/o/oauth2/auth?client_id=my_client_id&redirect_uri=redirect_url&response_type=code&scope=email+profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.profile.emails.read&state=state
文件(https://developers.google.com/youtube/v3/guides/authentication)所述默认approvel_prompt值为auto。
我已正确批准API测试应用程序。并从权限页面确认(https://security.google.com/settings/security/permissions)
然后,https://accounts.google.com/o/oauth2/auth再次显示审批提示。我已仔细检查approval_prompt不是"force"。
您可以将令牌缓存在文件中,并在应用程序启动时检查令牌是否仍然有效。您只需要在令牌过期时显示审批提示。
我就是这样做的。相关代码可以在这里找到。
"如果你在Passport.js中使用谷歌策略,你可以在路由时添加{prompt:'select_account'}选项来增强身份验证过程。这可以为拥有多个谷歌帐户或需要重新验证的用户提供更流畅的体验。
当使用passport.authenticate('google')方法时,您可以包括以下选项:app.get('/auth/google',passport.authenticate('google',{prompt:'select_account'}));
通过添加{prompt:‘select_account’},您可以确保在用户有多个帐户登录的情况下,向用户显示一个选择其谷歌帐户的屏幕,从而改善用户体验并避免潜在的混乱"最后可以看到您的重定向url,其中提示将为"同意"。如果提示仍然为"无",请确保您是否正确实现了上述代码。