Android AccountManager和OAuth-如何添加帐户?

Android AccountManager和OAuth-如何添加帐户?,android,oauth,accountmanager,Android,Oauth,Accountmanager,我的应用程序与使用OAuth授权的服务器连接。 我应该如何在客户经理中存储此类帐户? 如果我已登录并通过,它可以如下所示: Account account = new Account("user1", context.getString(R.string.ACCOUNT_TYPE)); AccountManager am = AccountManager.get(context); if (am.addAccountExplicitly(accou

我的应用程序与使用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帐户的情况下,应该传递什么来代替用户名和pass呢?
我应该在哪里存储OAuth秘密?OAuth令牌应存储在密钥\u AUTHTOKEN?

不要使用密码。您可以
设置AUTHTOKEN
,将OAuth令牌放在那里:

了解AccountManager不是加密服务或密钥链很重要。它以纯文本形式存储帐户凭据,就像您传递它们一样。在大多数设备上,这并不是一个特别的问题,因为它将它们存储在一个只有root用户才能访问的数据库中。但在根设备上,任何有权访问该设备的人都可以读取凭据

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