Revoca l'authorization account per un'app

Ho scritto un codice che richiede un AuthToken dal responsabile dell'account, utilizzando il getAuthToken (). La prima volta – l'utente deve "consentire" l'authentication, ma in seguito non c'è bisogno.

Voglio sapere se c'è un modo per revocare tale authorization, utilizzando il sistema android e il codice, per aiutarmi a eseguire il debug del mio programma (sto esaurendo i conti :)). La disinstallazione dell'applicazione non aiuta.

  • Xamarin ContentObserver
  • CoordinatorLayout: Nascondere / Mostrare la barra degli strumenti metà visibile?
  • Logcat non visualizza le mie chiamate al registro
  • convertire Mat a Bitmap Opencv per Android
  • android html decodifica
  • Flusso attività di Android (accesso o logging e passare alla Home)
  • Grazie,

    Udi

  • È ansible caricare dynamicmente una libreria in runtime da un'applicazione Android?
  • 3 Solutions collect form web for “Revoca l'authorization account per un'app”

    Ho rilevato che quando si rimuove e ri-aggiunge l'account, l'authorization viene revocata e devi dismettere di nuovo.

    Questo è il modo più semplice che ho trovato, io lo segnano come risposta a less che non ottengo una migliore.

    Potrebbe essere necessario eseguire una completa disinstallazione / reinstallazione in modo da revocarla. Inoltre, se si utilizza un utente condiviso specifico, è ansible modificare il sharedUserId dopo la disinstallazione in modo che assomiglia ad un account diverso. Infine, puoi firmarlo con un certificato diverso. Questo è quello che sono riuscito a scappare, ma una API pulita per revocare (o anche solo un'attività) sarebbe bello.

    Ho provato a utilizzare la riflessione (solo per prove). Purtroppo, lancia un SecurityException perché Android controlla che il chiamante è un'applicazione di sistema …

    Per riferimento, ecco il codice:

    /** * 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; } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.