8

This nice tutorial - очень хорошее введение в аутентификацию учетной записи на Android и ее использование, используя AccountManager Android.Android OAuth2 Рекомендации по использованию токена для новичков

Однако мне нужно создать клиентское приложение для API OAuth2 с использованием токена-носителя для аутентификации. Во время получения токена я получаю временную метку истечения срока его действия, но я не понимаю, где хранить и как правильно использовать его. Проблема в том, что если я не хочу иметь ненужные поездки на сервер, приложение поймет, что носитель стал недействительным только после того, как он получил ошибку HTTP 401 с сервера при запросе любого случайного ресурса. Итак, что лучше всего для решения этой проблемы:

  1. Должен ли каждый сетевой запрос в моем коде иметь механизм повтора в случае, если токен-носитель стал недействительным? Я бы, вероятно, invalidateAuthToken, когда ловить исключения и повторить попытку.
  2. Может Sync Adapter как-то помочь здесь?

Поскольку я новичок в разработке Android, я ожидаю, что решение может также быть чем-то совершенно другим, чем я ожидаю.

Если это необходимо, я намерен использовать Volley для связи с сервером.

ответ

9

я узнал, что мои собственные ответы после немного исследования:

  1. Да, вызов AccountManager#invalidateAuthToken удаляет последний сохраненный маркер аутентификации (маркер доступа в случае oauth2) и ожидает, что вы обнаружения, что на следующий AccountAuthenticator#getAuthToken call. Например, следующий мой код для этого метода:

    Я также получил confirmation from the author of the blog post упомянутые в вопросе.

  2. SyncAdapter s не может помочь напрямую, поскольку их истинная цель заключается в получении данных из сети асинхронно (для разработчика) и прозрачно (для пользователя). Они просто используют AbstractAccountAuthenticator и при необходимости вызывают его методы.

+1

Может ли кто-нибудь указать мне, насколько это безопасно, когда вы используете диспетчер аккаунта для сохранения токена аутентификации и обновления токена? Мы столкнулись с группой аудиторов безопасности, которые говорят, что менеджер аккаунта небезопасен, чтобы сохранить данные токена. Но я не могу найти подходящий способ держать их в другом месте. –

+0

@sahan, все хранится в открытом тексте в диспетчере учетных записей, но доступно только на корневом устройстве. Точка токенов должна позволять отменять аутентификацию, не подвергая пользователей истинную регистрационную информацию, вы не должны беспокоиться о том, как вы храните их на устройстве. – sixones

1

Я уже сталкивался с той же проблемой и делал это library, чтобы передать OAuth2 в Android. но библиотека является расширением для Retrofit, что упрощает процесс аутентификации с поставщиком OAuth 2, но вы все же можете его использовать.

Смежные вопросы