Google oauth 强制google帐户选择器

Google oauth 强制google帐户选择器,google-oauth,Google Oauth,是否有一种方法可以强制显示谷歌帐户选择器,即使用户仅使用一个帐户登录 我已尝试重定向到此URL: https://accounts.google.com/AccountChooser?service=lso&continue=[authorizeurl] 这似乎是可行的,但我不知道是否还有其他情况下它可能会失败 OAuth2授权URL中支持以下参数: 提示 当前它可以有值none,选择账户,和同意 无:将导致谷歌不显示任何用户界面,因此在用户需要登录时失败,或在多次登录时选择帐户,或

是否有一种方法可以强制显示谷歌帐户选择器,即使用户仅使用一个帐户登录

我已尝试重定向到此URL:

https://accounts.google.com/AccountChooser?service=lso&continue=[authorizeurl]
这似乎是可行的,但我不知道是否还有其他情况下它可能会失败


OAuth2授权URL中支持以下参数:

提示

当前它可以有值
none
选择账户
,和
同意

  • 无:将导致谷歌不显示任何用户界面,因此在用户需要登录时失败,或在多次登录时选择帐户,或在首次批准时同意。它可以在一个不可见的i-frame中运行,以便在您决定(例如)呈现授权按钮之前从先前授权的用户处获取令牌

  • 同意:将强制显示批准页面,即使用户先前已授权您的应用程序。在一些特殊情况下可能很有用,例如,如果您丢失了用户的刷新令牌,因为Google只在明确同意操作时发布刷新令牌

  • select_account:将导致显示帐户选择器,即使只有一个登录用户,也会按照您的要求显示

select\u account
可以与
同意
组合,如下所示:

prompt=select_account approve

此外,您还可以在HTML标记中添加“prompt”参数作为数据提示符=“select_account”:



而且每次都会强制使用帐户选择器,即使您只使用一个帐户登录

有些人可能会在这里寻找有关如何在Microsoft.AspNetCore.Authentication中执行此操作的答案

我们能够通过Startup.ConfigureServices方法中的以下代码完成此任务:

services.AddAuthentication()
  .AddGoogle(options =>
  {
      options.ClientId = configHelper.GoogleOAuthClientID;
      options.ClientSecret = configHelper.GoogleOAuthSecret;
      options.CallbackPath = "/signin-google";
      options.AuthorizationEndpoint = string.Concat(options.AuthorizationEndpoint, "?prompt=select_account");
  });

如果您使用的是
gapi
,则只需添加
提示:“选择账户”

例如:


对于谷歌api php客户端(),您可以按照以下方式进行操作:

$client = new Google_Client();
$client->setApprovalPrompt("force");
$client->createAuthUrl();

“批准\提示=强制”是否与“提示=同意”相同?谢谢,但与prompt=approve不同,它不能与“select\u account”选项组合使用。如果现在正在编写新代码,请使用“提示”。有没有办法强制使用gmail帐户登录(如hd=gmail.com)?@woloski,是的,hd=default应该限制为gmail帐户prompt=select\u account+approve不起作用,您需要使用prompt=select\u account approve-----docs:not working for me,
但onSignIn仍然调用time@BenjaminPoignant您的问题(页面加载时立即调用成功处理程序)与此问题所涉及的问题略有不同(尽管您的困惑是可以理解的)。注意,您需要使用
gapi.auth2.getAuthInstance().signOut()
将用户注销您的应用程序。这个问题是关于如何做到这一点,以确保当用户再次单击登录按钮时,他们有机会选择登录哪个Google帐户,而不是在单击登录按钮后立即使用他们当前的Google帐户。
gapi.load('auth2', function () {
            gapi.auth2.init({
                client_id: "client_id.apps.googleusercontent.com",
                scope: "profile email", // this isn't required
                ux_mode: 'redirect',
                redirect_uri: 'https://www.example.com',
                prompt: 'select_account'
            }).then(function (auth2) {
                console.log("signed in: " + auth2.isSignedIn.get());
                x = auth2.isSignedIn.get();
                auth2.isSignedIn.listen(onSignIn);
                var button = document.querySelector('#signInButton');
                button.addEventListener('click', function () {
                    auth2.signIn();
                });
            });
        });
$client = new Google_Client();
$client->setApprovalPrompt("force");
$client->createAuthUrl();