我編寫了一個代碼,使用getAuthToken()從賬戶管理器請求一個AuthToken。在第一次 - 用戶需要「允許」身份驗證,但稍後沒有必要。撤銷應用的帳戶權限
我想知道是否有撤銷該許可,使用Android系統或代碼,以幫助我調試我的程序(我跑出來的帳戶:))的方式。卸載該應用程序無濟於事。
謝謝
烏迪
我編寫了一個代碼,使用getAuthToken()從賬戶管理器請求一個AuthToken。在第一次 - 用戶需要「允許」身份驗證,但稍後沒有必要。撤銷應用的帳戶權限
我想知道是否有撤銷該許可,使用Android系統或代碼,以幫助我調試我的程序(我跑出來的帳戶:))的方式。卸載該應用程序無濟於事。
謝謝
烏迪
我發現,當你刪除並重新添加帳戶,由許可被撤銷,你必須再次允許它。
這是我發現,我這標誌着作爲答案,除非我會得到一個更好的一個最簡單的方法。
我嘗試使用反射(僅用於測試目的)。 不幸的是,它拋出一個SecurityException因爲Android的檢查,來電者是一個系統的應用...
僅供參考,這裏是代碼:
/**
* Revoke the fact that current app is allowed to retrieve an authToken for an account.
* @param accountName The account whose permissions are being revoked
* @param context current context
* @return true if revoked successfully, false otherwise
*/
public static boolean revokeAppPermission(String accountName, Context context) {
if (accountName == null) {
Log.w(TAG, "revokeAppPermission: abort, account missing.");
return false;
}
AccountManager accountManager = AccountManager.get(context);
Account[] accounts = accountManager.getAccounts();
Account accountToRevoke = null;
for (Account account : accounts) {
if (accountName.equals(account.name)) {
accountToRevoke = account;
break;
}
}
if (accountToRevoke == null) {
Log.w(TAG, "revokeAppPermission: abort, no account found.");
return false;
}
try {
// public void updateAppPermission(Account account, String authTokenType, int uid, boolean value) {
Method updateAppPermissionMethod = AccountManager.class.getDeclaredMethod("updateAppPermission",
Account.class, String.class, int.class, boolean.class);
updateAppPermissionMethod.setAccessible(true);
updateAppPermissionMethod.invoke(accountManager, // Instance to invoke the method on
accountToRevoke, // account
"oauth2:https://www.googleapis.com/auth/somegoogleservice", // authTokenType
context.getApplicationInfo().uid, // uid
false); // false to revoke
} catch (Exception e) {
Log.w(TAG, "revokeAppPermission: Failed:" + e.getMessage());
e.printStackTrace();
return false;
}
return true;
}
刪除並重新添加帳戶,然後權限被撤銷......其錯誤! – 2015-04-13 07:24:04
你是神。這是在查看完所有內容之後爲我工作的唯一方法。謝謝。 – 0x4B1D 2015-04-23 03:39:26