2013-03-26 138 views
15

我正在使用Google APIs Client Library for JavaScript (Beta)來授權用戶在Google應用程序上的Google帳戶(用於YouTube操作)。一切工作正常,但我不知道如何「註銷」用戶從我的應用程序,即重置訪問令牌。如何重置谷歌oauth 2.0授權?

例如,下面的代碼檢查用戶權限,如果沒有,顯示彈出窗口,用戶登錄進去,並允許Web應用程序訪問用戶數據:

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

但客戶端庫沒有方法重置授權。

workaround將用戶重定向到「accounts.google.com/logout」,但這種方式並不是我需要的:因此我們不僅從我的應用程序登錄用戶,還從任何地方登錄用戶。

谷歌常見問題和客戶端庫的描述既沒有幫助。

+0

[重複的問題](http://stackoverflow.com/questions/14723383/google-logout-using-api-javascript-jquery) – 2013-03-26 20:45:25

回答

9

嘗試撤銷訪問令牌,這應該取消實際的授權,以便自動批准將停止工作。我認爲這會解決你的問題。

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

+0

感謝。它像一個魅力。 – ZavtraMen 2013-03-27 03:53:39

+1

對於JavaScript解決方案,請參閱以下其他問題:http://stackoverflow.com/questions/12809339/how-to-revoke-an-authentication-token-client-side-against-the-google-api/19205371#19205371 – 2014-08-06 10:18:04

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

這取決於你通過重新授權的意思。我能想到的這樣做的三種方式:服務器
轉到myaccount.google.com/permissions上

  1. 取消授權,找到你的應用程序,並刪除它。您下次嘗試登錄時,必須使用帳戶選擇器和許可屏幕完成完整的授權流程。

  2. 退出客戶端
    gapi.auth2.getAuthInstance()。signOut();
    以這種方式,Google授權服務器仍會記住您的應用程序,授權令牌仍保留在瀏覽器存儲中。

  3. 退出並斷開連接
    gapi.auth2.getAuthInstance()。signOut();
    gapi.auth2.getAuthInstance()。disconnect();
    這相當於(1),但在客戶端。