2012-05-10 93 views
2

我使用的代碼如Authenticating against App Engine from an Android app中所解釋的那樣在我的GAE應用上啓用Google帳戶身份驗證。問題是,一旦我允許我的android應用程序訪問一個帳戶,我無法再使用相同的帳戶重複該過程(用於測試)。我已經試過:撤銷Android應用上的Google帳戶訪問確認

  • invalidateAuthToken()
  • 清除數據(設置=>應用程序=>管理應用程序)
  • 卸載該應用

,但應用程序仍然獲得訪問該帳戶。以下是我使用的代碼片段顯示用戶確認的意圖:

private class GetAuthTokenCallback implements AccountManagerCallback<Bundle> { 
    public void run(AccountManagerFuture<Bundle> result) { 
     Bundle bundle; 
     try { 
      bundle = result.getResult(); 
      Intent intent = (Intent)bundle.get(AccountManager.KEY_INTENT); 
      if(intent != null) { 
       // User input required 
       startActivity(intent); 
      } else { 
       onGetAuthToken(bundle); 
      } 
     } catch (OperationCanceledException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (AuthenticatorException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
}; 

有沒有人遇到過這個問題?任何想法如何強制下一次運行確認?

回答

1

這些權限保存在系統數據庫中。卸載應用程序後應將其刪除,但清除應用程序數據不會產生任何影響。如果它不工作,可能是一個錯誤。嘗試使用其他設備和/或仿真器。可能工作的極端措施是恢復出廠設置:)

+0

我鏈接到這些問題* [你如何強制AccountManager顯示「訪問請求」後一個屏幕用戶已經允許訪問?](http://stackoverflow.com/questions/6852256/how-do-you-force-accountmanager-to-show-the-access-request-screen-after-a-user)* [從AccountManager憑證訪問]取消授權和應用程序(http://stackoverflow.com/questions/8206036/unauthorize-and-app-from-accountmanager-credential-access),其中一個有你的答案。謝謝 – blue

+0

對,如果你有一個根植設備(或者在模擬器上運行),清理授權表將會起作用。你可能會更加微妙,但只刪除自己的應用程序的條目。 –

0

我找到了一種更清潔的解決方案。我想更快一點。您只需執行2個步驟(從下面的1 & 2;詳細步驟顯示):

0)我不認爲這額外的步驟是必要的(沒有嘗試過沒有),但我已經添加無論如何。只需從您的應用中斷開PlusClient即可。

mPlusClient.clearDefaultAccount(); 
mPlusClient.disconnect(); 

1)從所有Google Play services應用清除數據的應用從Settings屏幕(或下載屏)您的設備上。

2)從網絡上的Google帳戶中的Privacy部分的Connected applications and sites屏幕取消您的應用的權限。

3)那麼再次連接。它現在應該工作。需要時重複步驟。

注意:步驟1和2至關重要。如果你只做第1步,它將像往常一樣登錄你的應用程序,並顯示吐司說Welcome back to <app_name>. You're signed in as <account_name>

相關問題