Android accountmanager和存储密码

时间:2017-03-20 07:23:35

标签: android oauth oauth-2.0 accountmanager

我正在阅读其他帖子,但无法得到正确答案。所以这就是:

想象一下,我有一个保护后端API的Oauth2服务器实现。我希望我的应用程序像facebook或gmail app一样运行,并希望在他们最初登录后永远保持身份验证(直到他们手动撤销)。永远不应该再问他们的密码。如果不将密码存储在设备上,这是否可行?

是否有刷新令牌来解决这个问题,还是应该以其他方式接近?还有一个安卓库可以解决这个问题,因为我不想重新发明轮子。

1 个答案:

答案 0 :(得分:1)

您可以通过AccountManager为用户保存用户名,密码和令牌,稍后再检索。只需在应用程序打开时检查用户帐户是否存在,即可采取相应措施。

您也可以稍后更新帐户凭据。 下面是一个基本的示例代码段

private static final String TYPE_ACCOUNT = "com.some.package";    

public static void addAccount(Context context, String username, String password, String token) {
    AccountManager accountManager = AccountManager.get(context);
    Account account = new Account(username, TYPE_ACCOUNT);
    accountManager.addAccountExplicitly(account, password, null);
    accountManager.setAuthToken(account, TYPE_ACCOUNT, token);
  }

 public static Account getUserAccount(Context context) {
    AccountManager accountManager = AccountManager.get(context);
    Account account = null;

    try {
      account = accountManager.getAccountsByType(TYPE_ACCOUNT)[0];
    } catch (Exception ignored) {

    }
    return account;
  }