ユーザーが1つのアカウントでログインしている場合でも、 Googleアカウントチューザーを強制的に表示する方法はありますか?
私はこのURLにリダイレクトしてみました:
https://accounts.google.com/AccountChooser?service=lso&continue=[authorizeurl]
動作しているように見えますが、失敗する可能性のある他の条件があるかどうかはわかりません。
ユーザーが1つのアカウントでログインしている場合でも、 Googleアカウントチューザーを強制的に表示する方法はありますか?
私はこのURLにリダイレクトしてみました:
https://accounts.google.com/AccountChooser?service=lso&continue=[authorizeurl]
動作しているように見えますが、失敗する可能性のある他の条件があるかどうかはわかりません。
次のパラメータは、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
また、HTMLタグに「prompt」パラメータをdata-prompt="select_account"として追加できます。
<div class="g-signin2" data-onsuccess="onSignIn" data-prompt="select_account">
また、1つのアカウントのみでログインしている場合でも、毎回アカウント選択を強制します
一部の人々は、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
を追加するだけではありません。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();
});
});
});
google api phpクライアント(https://github.com/google/google-api-php-client)の場合、次のように管理できます。
$client = new Google_Client();
$client->setApprovalPrompt("force");
$client->createAuthUrl();