2011-12-19 86 views

回答

8

我相信如果你去https://accounts.google.com/IssuedAuthSubTokens它應該列出你的應用程序在「關聯網站,應用程序和服務」從那裏你可以撤銷訪問。

+2

我的Android開發沒有列出,只有我已經授權的網站。 – gdonald 2011-12-20 18:05:50

+1

@gdonald我在找那個問題完全一樣的答案。在IssuedAuthSubTokens下,我也沒有看到我列出的Android應用程序。 – 2012-09-30 18:42:37

+0

http://stackoverflow.com/questions/6852256/how-do-you-force-accountmanager-to-show-the-access-request-screen-after-a-user – 2012-12-04 03:43:28

-5

看看你的AndroidManifest文件。

1

這是不可能通過任何公共的官方API。

參見:

即使卸載並重新安裝應用程序並不能幫助。

這可能是一個植根於設備上的方法:你需要以編程方式撤銷令牌 How do you force AccountManager to show the "Access Request" screen after a user has already allowed access?

1

。首先,試用下面發佈的示例應用程序: https://developers.google.com/drive/quickstart-android

此示例應用程序顯示對話框,讓您選擇一個帳戶,然後拍攝照片,然後將其上傳到Google雲端硬盤。我發現的一件重要事情是,這個示例應用程序最終會失敗。我發現應用程序的相機部分會導致崩潰。因此,禁用代碼的攝像頭部分,只需將文件替換爲SD卡上的某個文件,然後將文件上傳到Drive。

要撤銷使用驅動器許可,您需要執行下面的代碼:

String token = credential.getToken(); 


HttpRequestFactory factory = HTTP_TRANSPORT.createRequestFactory(); 
GoogleUrl url = new GoogleUrl("https://accounts.google.com/o/oauth2/revoke?token=" + token); 
HttpRequest request = factory.buildGetRequest(url); 
HttpResponse response = request.execute(); 

參考示例代碼如何訪問憑據變量。此外,您必須在不在主線程中的線程中運行上述代碼,否則將失敗。

您還需要添加以下權限。示例代碼無法指明這些權限,如果沒有他們的應用程序將崩潰:

<uses-permission android:name="android.permission.ACCOUNT_MANAGER" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 

如果Eclipse的抱怨,其中一些權限只授予系統,只要運行清理項目,它會刪除該警告。完成此操作後,您應該卸載應用程序並重新啓動設備。有關撤銷令牌的更多信息,請參見在 「吊銷令牌」:

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

+0

謝謝,這種方法工作正常。 – tcboy88 2014-01-08 18:30:21

0

使用谷歌播放服務:

http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html

添加https://www.googleapis.com/auth/userinfo.profile到你的範圍。

例子:

String scope="oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile" 

final String token = GoogleAuthUtil.getToken(context, "[email protected]", scope); 

或「強力」

Intent res = new Intent(); 
res.addCategory("account:[email protected]"); 
res.addCategory("scope:oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"); 
res.putExtra("service", "oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"); 
Bundle extra= new Bundle(); 
extra.putString("androidPackageName","com.your.package"); 
res.putExtra("callerExtras",extra); 
res.putExtra("androidPackageName","com.your.package"); 
res.putExtra("authAccount","[email protected]"); 

String mPackage = "com.google.android.gms"; 
String mClass = "com.google.android.gms.auth.TokenActivity"; 
res.setComponent(new ComponentName(mPackage,mClass)); 
startActivityForResult(res,100); 

現在,當你撤銷訪問這裏https://accounts.google.com/IssuedAuthSubTokens應用程序再次顯示了在設備的許可窗口。

2

兩個步驟再次觸發授權頁面:

  1. https://accounts.google.com/IssuedAuthSubTokens撤銷你想要的應用程序。這將清除服務器端的權限。
  2. 轉到您的Android設備的設置 - >數據和時間:快一小時或兩天的時間。這將迫使當前令牌過期。
+0

這適用於我與Google雲端硬盤的應用連接。在測試時,我將日期定在快進日期。叮叮噹噹取消訪問並運行授權頁面後,每次都會彈出。 – 2015-05-29 05:11:10

1

掙扎後t o撤銷對我的Android應用上授予的Gmail API權限的授權(仍在調試中),我發現它確實出現在https://security.google.com/settings/security/permissions上,如@David Waters提及的(這是一個新鏈接,但發送到同一位置),但只有已通過Google Developers Console正確啓用API。這意味着要正確添加您的OAuth 2.0客戶端ID,即使應用程序仍處於開發階段並處於調試模式。

有關如何在Gmail API網站上的Android Quickstart指南中添加憑據的非常好的指南(步驟1 & 2)。