2013-03-26 23 views
15

Używam Google APIs Client Library for JavaScript (Beta) do autoryzacji konta użytkownika Google w aplikacji internetowej (w przypadku manipulacji w serwisie youtube). Wszystko działa dobrze, ale nie mam pojęcia, jak "wylogować" użytkownika z mojej aplikacji, tj. Zresetować tokeny dostępu.Jak zresetować autoryzację google oauth 2.0?

Na przykład poniższy kod sprawdza autoryzację użytkownika, a jeśli nie, pokazuje okienko dla użytkownika do logowania do konta i umożliwić dostęp web-aplikacji do danych użytkownika:

gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false}, handleAuth); 

Ale biblioteka klient nie ma metody aby zresetować autoryzację.

Istnieje workaround, aby przekierować użytkownika na "accounts.google.com/logout", ale to podejście nie jest tym, czego potrzebuję: dlatego logujemy użytkownika z konta Google nie tylko z mojej aplikacji, ale także z dowolnego miejsca.

Opis biblioteki Google FAQ i klienta nie jest przydatny.

+0

[Duplikat pytanie] (http://stackoverflow.com/questions/14723383/google-logout-using-api-javascript-jquery) –

Odpowiedz

9

Spróbuj unieważnić token dostępu, który powinien unieważnić faktyczny przydział, aby automatyczne zatwierdzanie przestało działać. Zakładam, że to rozwiąże twój problem.

https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke

+0

dzięki. To działa jak urok. – ZavtraMen

+1

W przypadku rozwiązania JavaScript zobacz inne pytanie: http://stackoverflow.com/questions/12809339/how-to-revoke-an- authentication-token-client-side-against-the-google-api/19205371#19205371 –

7

Jego bardzo prosty. Po prostu odwołaj dostęp.

void RevokeAcess() 
{ 
    try{ 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost("https://accounts.google.com/o/oauth2/revoke?token="+ACCESS_TOKEN); 
    org.apache.http.HttpResponse response = client.execute(post); 
    } 
    catch(IOException e) 
    { 
    } 
} 

Ale to powinno być w asyncTask

0

To zależy co masz na myśli przez zresetowanie upoważnienia. Mogę myśleć o trzech sposobach ten sposób:

  1. Usuń autoryzacja na serwerze
    Go do myaccount.google.com/permissions, znajdź swoją aplikację i usunąć go. Następnym razem, gdy spróbujesz się zalogować, musisz przejść pełny proces autoryzacji za pomocą ekranu wyboru konta i zgody.

  2. Wyloguj się na kliencie
    gapi.auth2.getAuthInstance(). SignOut();
    W ten sposób serwer autoryzacji Google nadal zapamiętuje twoją aplikację, a token autoryzacji pozostaje w pamięci przeglądarki.

  3. Wyloguj się i rozłącz
    gapi.auth2.getAuthInstance(). SignOut();
    gapi.auth2.getAuthInstance(). Disconnect();
    Jest to równoważne (1), ale na kliencie.

Powiązane problemy