63

ユーザーが1つのアカウントでログインしている場合でも、 Googleアカウントチューザーを強制的に表示する方法はありますか?

私はこのURLにリダイレクトしてみました:

https://accounts.google.com/AccountChooser?service=lso&continue=[authorizeurl]

動作しているように見えますが、失敗する可能性のある他の条件があるかどうかはわかりません。

ここに画像の説明を入力してください

4

5 に答える 5

103

次のパラメータは、OAuth2認証URLでサポートされています。

prompt

現在、値、、、およびを持つことがnoneできselect_accountますconsent

  • none:GoogleにUIが表示されないため、ユーザーがログインする必要がある場合は失敗します。マルチログインの場合はアカウントを選択します。最初の承認の場合は同意します。たとえば、認証ボタンをレンダリングする前に、以前に認証されたユーザーからトークンを取得するために、非表示のiフレームで実行できます。

  • 同意:ユーザーが以前にアプリケーションを承認した場合でも、承認ページが強制的に表示されます。Googleは明示的な同意アクションでのみrefresh_tokensを発行するため、ユーザーのrefresh_tokenを紛失した場合など、いくつかのコーナーケースで役立つ場合があります。

  • select_account:ログインしているユーザーが1人でも、要求どおりにアカウントセレクターが表示されます。

select_account次のように、と組み合わせることができますconsent

prompt=select_account consent

于 2013-01-18T06:24:57.870 に答える
13

また、HTMLタグに「prompt」パラメータをdata-prompt="select_account"として追加できます。

<div class="g-signin2" data-onsuccess="onSignIn" data-prompt="select_account"> 

また、1つのアカウントのみでログインしている場合でも、毎回アカウント選択を強制します

于 2016-08-22T13:10:26.633 に答える
10

一部の人々は、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");
  });
于 2018-03-29T14:56:16.630 に答える
3

使用している場合は、 例gapiを追加するだけではありません。prompt: 'select_account'

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();
                });
            });
        });
于 2019-03-29T06:19:37.957 に答える
2

google api phpクライアントhttps://github.com/google/google-api-php-client)の場合、次のように管理できます。

$client = new Google_Client();
$client->setApprovalPrompt("force");
$client->createAuthUrl();
于 2019-06-18T09:21:10.980 に答える