2011-04-02 94 views
3

我的應用程序連接到使用OAuth授權的服務器。 我應該如何在帳戶管理器中存儲這些帳戶? 萬一我已經登錄並通過,它可以像下面:AccountManager和OAuth - 如何添加帳戶?

 Account account = new Account("user1", context.getString(R.string.ACCOUNT_TYPE)); 
     AccountManager am = AccountManager.get(context); 
     if (am.addAccountExplicitly(account, "pass1", null)) { 
      result = new Bundle(); 
      Log.i(TAG, "account: "+account.name+", "+account.type); 
      result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); 
      result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); 
      activity.setAccountAuthenticatorResult(result); 

但是應該傳遞,而不是用戶名和傳遞OAuth的帳戶的情況下? 我應該在哪裏存儲OAuth祕密? OAuth令牌應該存儲在KEY_AUTHTOKEN中?

回答

0

不要使用密碼,你可以setAuthToken,把OAuth令牌有代替:

理解的AccountManager是不加密的服務或鑰匙鏈是非常重要的。它以純文本格式存儲帳戶憑證,就像您傳遞它們一樣。在大多數設備上,這不是一個特別的問題,因爲它將它們存儲在只能由root用戶訪問的數據庫中。但是,在有根的設備上,任何具有adb設備訪問權限的人都可以讀取憑據。

考慮到這一點,您不應該將用戶的實際密碼傳遞給AccountManager.addAccountExplicitly()。相反,您應該存儲一個加密安全的令牌,該令牌對攻擊者的使用有限。如果你的用戶憑證保護着有價值的東西,你應該仔細考慮做類似的事情。

相關問題