2013-03-26 21 views
15

私はGoogle APIs Client Library for JavaScript (Beta)を使用して、WebアプリケーションでユーザーのGoogleアカウントを認証しています(YouTube操作用)。すべて正常に動作しますが、私はアプリケーションから「ログアウト」する、つまりアクセストークンをリセットする方法がわかりません。Googleのoauth 2.0認証をリセットするにはどうすればよいですか?

はたとえば、次のコードでは、ユーザーの許可を検査していない場合、ユーザーは、ユーザーデータへのアカウントと許可証のWebアプリケーションへのアクセスにログインするために、ポップアップウィンドウを示しています

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

しかし、クライアントライブラリが持っていない方法承認をリセットします。

ユーザーを「accounts.google.com/logout」にリダイレクトするためのworkaroundがありますが、この アプローチは私の必要とするものではありません。したがって、私たちは自分のアプリケーションだけでなく、どこからでもユーザーをGoogleアカウントからログアウトします。

Googleのよくある質問とクライアントのライブラリの説明は役に立ちません。

+0

[重複した質問](http://stackoverflow.com/questions/14723383/google-logout-using-api-javascript-jquery) –

答えて

9

アクセストークンを無効にすると、自動承認が機能しなくなるように実際の許可が取り消されます。私はこれがあなたの問題を解決すると思います。

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

+0

どうもありがとう。それは魅力のように働く。 – ZavtraMen

+1

JavaScriptソリューションについては、この他の質問をご覧ください。http://stackoverflow.com/questions/12809339/how-to-revoke-an-authentication-token-client-side-against-the-google-api/19205371#19205371 –

0

は単純に使用します。gapi.auth.setToken(null);

7

その非常にシンプル。アクセスを取り消すだけです。

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) 
    { 
    } 
} 

しかし、それはそれはあなたが許可をリセットすることによって何を意味するかによって異なりasyncTask

0

にする必要があります。私はこれをやって、次の3つの方法を考えることができます。サーバー

  1. 削除の権限は、myaccount.google.com/permissionsに行くあなたのアプリを見つけ、それを削除します。次にサインインしようとすると、アカウント選択画面と同意画面で完全な認証フローを完了する必要があります。

  2. クライアントでログアウト
    gapi.auth2.getAuthInstance()。signOut();
    このようにして、Google認証サーバーは引き続きアプリを覚えています。承認トークンはブラウザの記憶域に残ります。

  3. ログアウトと切断
    gapi.auth2.getAuthInstance()。signOut();
    gapi.auth2.getAuthInstance()。disconnect();
    これは(1)と同じですが、クライアント上にあります。

関連する問題