私は JavaScript用のGoogle APIクライアントライブラリ(ベータ版) を使用して、(YouTube操作のために)Webアプリケーションでユーザーのgoogleアカウントを認証します。すべてが正常に動作しますが、アプリケーションからユーザーを「ログアウト」する方法、つまりアクセストークンをリセットする方法がわかりません。
たとえば、次のコードはユーザー認証をチェックし、そうでない場合は、ユーザーがアカウントにログインしてWebアプリケーションからユーザーデータへのアクセスを許可するポップアップウィンドウを表示します。
gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false}, handleAuth);
ただし、クライアントライブラリには認証をリセットするメソッドがありません。
ユーザーを「accounts.google.com/logout」にリダイレクトするための workaround がありますが、このアプローチは私が必要とするものではありません。したがって、アプリケーションだけでなく、どこからでもgoogleアカウントからユーザーをログオフします。
Googleのよくある質問とクライアントライブラリの説明も役に立ちません。
自動承認が機能しなくなるように、実際の付与を取り消す必要があるアクセストークンを取り消してみてください。これで問題が解決すると思います。
https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke
とてもシンプルです。アクセスを取り消すだけです。
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にあるはずです
それはあなたが許可をリセットすることによってあなたが何を意味するかによる。これを行う3つの方法を考えることができます。
サーバーの認証を削除する
myaccount.google.com/permissionsにアクセスし、アプリを見つけて削除します。次回サインインしようとするときは、Account Chooserと同意画面で完全な承認フローを完了する必要があります。
クライアントからサインアウトする
gapi.auth2.getAuthInstance()。signOut();
このようにして、Google認証サーバーは引き続きアプリを記憶し、認証トークンはブラウザーのストレージに残ります。
サインアウトして切断する
gapi.auth2.getAuthInstance()。signOut();
gapi.auth2.getAuthInstance()。disconnect();
これは(1)と同等ですが、クライアント上にあります。
単に使用:gapi.auth.setToken(null);