Pytanie Wymuś wybór konta Google


Czy istnieje sposób, w jaki mogę wymusić selektor konta Google pojawiać się, nawet jeśli użytkownik jest zalogowany tylko na jednym koncie.

Próbowałem przez przekierowanie do tego adresu URL:

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

i wydaje się, że działa, ale nie wiem, czy są jakieś inne warunki, w których może zawieść.

enter image description here


42
2018-01-17 17:08


pochodzenie




Odpowiedzi:


Poniższy parametr jest obsługiwany w adresach autoryzacji OAuth2:

prompt

Obecnie może mieć wartości none, select_account, i consent.

  • none: spowoduje, że Google nie będzie wyświetlał żadnego interfejsu użytkownika, a zatem nie będzie działał, jeśli użytkownik będzie musiał się zalogować, lub wybierze konto w przypadku wielokrotnego logowania, lub wyrazi zgodę, jeśli wyrazi na to zgodę. Można go uruchomić w niewidocznej ramce i, aby uzyskać token od wcześniej autoryzowanych użytkowników, zanim zdecydujesz się, na przykład, wyświetlić przycisk autoryzacji.

  • zgoda: Wymusi wyświetlenie strony zatwierdzenia, nawet jeśli użytkownik wcześniej autoryzował twoją aplikację. Może być przydatny w kilku przypadkach narożnych, na przykład, jeśli straciłeś token odświeżania dla użytkownika, ponieważ Google tylko wydaje refresh_tokens na podstawie akcji wyraźnej zgody.

  • select_account: spowoduje wyświetlenie selektora konta, nawet jeśli jest zalogowany pojedynczy użytkownik, tak jak prosiłeś.

select_account można łączyć z consent, jak w:

prompt=select_account consent


72
2018-01-18 06:24



Czy "approval_prompt = force" jest takie samo jak "prompt = consent"? Dzięki - José F. Romaniello
Tak, ale w przeciwieństwie do prompt = consent, nie można jej połączyć z opcją "select_account". Zamiast tego wpisz "prompt", jeśli teraz piszesz nowy kod. - breno
Czy istnieje sposób na wymuszenie logowania się na konta Gmail (np. Hd = gmail.com)? - woloski
@woloski, tak, hd = domyślnie powinien ograniczać się do kont Gmail - Ari Porad
prompt = select_account + zgoda nie działa, będziesz chciał użyć prompt = select_account consent ------ docs: developers.google.com/accounts/docs/OpenIDConnect - Brett C


Możesz również dodać parametr "prompt" w tagach HTML jako prompt danych = "select_account":

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

i będzie wymuszać wybieranie konta za każdym razem, nawet jeśli jesteś zalogowany tylko z jednym kontem


4
2017-08-22 13:10



Nie działa dla mnie, <div class="g-signin2" data-scope="profile email" data-width="298" data-onsuccess="onSignIn" data-prompt="select_account" ></div> ale onSignIn wciąż dzwonił za każdym razem - Benjamin Poignant


Niektórzy ludzie mogą tu skończyć szukając odpowiedzi na pytanie, jak to zrobić w Microsoft.AspNetCore.Authentication.

Udało nam się to osiągnąć za pomocą następującego kodu w metodzie 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");
  });

3
2018-03-29 14:56