Android аккаунт-менеджер и хранение паролей
Я читал вокруг других тем, но не могу найти правильный ответ. Так что вот так:
Представьте, что у меня есть реализация сервера Oauth2, защищающая бэкэнд-API. Я хотел бы, чтобы мое приложение функционировало как приложение для Facebook или Gmail и хотело бы оставаться аутентифицированными вечно (до тех пор, пока они не будут отменены вручную) после первоначального входа в систему. Они никогда не должны спрашивать свой пароль снова. Возможно ли это без сохранения пароля на устройстве?
Существуют ли токены обновления для решения этой проблемы или к этому нужно подходить другим способом? Также есть библиотека Android, которая решает эту проблему, так как я не хочу изобретать велосипед.
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;
}