AccountManager和OAuth - 如何添加帐户?

时间:2011-04-02 20:36:59

标签: android 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?

1 个答案:

答案 0 :(得分:0)

请勿使用setAuthToken密码,而是将OAuth令牌放在那里:

  

了解AccountManager不是加密服务或钥匙串非常重要。它以正文传递的方式存储帐户凭据。在大多数设备上,这不是特别关注的问题,因为它将它们存储在只能由root访问的数据库中。但是在root设备上,任何拥有adb访问权限的人都可以读取凭据。

     

考虑到这一点,您不应将用户的实际密码传递给AccountManager.addAccountExplicitly()。相反,您应该存储对攻击者有限使用的加密安全令牌。如果您的用户凭据保护了有价值的东西,您应该仔细考虑做类似的事情。