Для чего мне использовать Android AccountManager? - PullRequest
147 голосов
/ 27 апреля 2010

Я видел AccountManager в Android SDK и он используется для хранения информации об учетной записи. Таким образом, я не могу найти общего обсуждения того, для чего оно предназначено. Кто-нибудь знает какие-либо полезные дискуссии о том, что является целью AccountManager и что он покупает для вас? Любое мнение о том, для каких типов счетов это подходит? В этом месте вы бы поместили информацию об учетной записи своего пользователя для общего веб-сервиса?

Ответы [ 4 ]

93 голосов
/ 23 декабря 2011

Этот вопрос немного стар, но я думаю, что он по-прежнему интересен.

AccountManager, SyncAdapter и ContentProvider идут вместе.

Но вы можете:

С AccountManager / SyncAdapter / ContentProvider:

  • AccountManager дает пользователям центральную точку (Настройки> Учетные записи) для определения их учетных данных
  • Android решает, когда можно выполнить синхронизацию через SyncAdapter. Это может быть полезно для оптимизации батареи (например, синхронизация не выполняется, когда сеть не работает)
  • ContentProvider - удобный способ обмена данными между приложениями Примечание. В Android .
  • ContentProvider планирует доступ к базе данных в фоновом потоке AsyncQueryHanlder помогает запрашивать ContentProvider в фоновом потоке, предотвращая ошибки Application Not Responsive (ANR) без необходимости явной обработки потоков.
  • ContentProvider привязывается к наблюдателю ContentResolver: это означает, что легко уведомлять просмотры при изменении содержимого

Итог : фреймворк AccountManager / SyncAdapter / ContentProvider помогает, если вы хотите синхронизировать данные с веб-ресурса. Поддельные / тупые реализации требуются для API 7. Также

  • Если вы хотите только хранить данные, вам следует рассмотреть более простой механизм хранения данных
  • Если вам нужно только получить единственный ресурс, вы можете использовать AsyncTaskLoader
  • Если вы хотите загружать изображения асинхронно, вы можете использовать специализированные библиотеки, такие как Square Picasso
  • Если вы хотите выполнить какой-либо код в определенный момент времени, вы можете рассмотреть услугу / Тревога
  • доступно только через API> = 7 (это больше не имеет значения)

Наконец, если вы используете SyncAdapter, серьезно подумайте о Firebase Cloud Messaging (ранее Google Cloud Messaging), или «push-уведомления», чтобы иметь более свежие обновления и оптимизировать использование батареи.

23 голосов
/ 10 марта 2011

Класс AccountManager интегрирован с вашими учетными записями телефона. Поэтому, если вы будете следовать всем инструкциям и работать правильно, вы увидите свои учетные записи в меню «Настройки-> Учетные записи и синхронизация». Оттуда вы можете настроить их или даже удалить их. Кроме того, accountManager имеет кеш аутентификационных билетов для ваших аккаунтов. Это также можно использовать, если вы не планируете синхронизировать свою учетную запись (насколько я знаю).

Если вы не хотите, чтобы ваши учетные записи отображались в этом меню, вам не следует использовать AccountManager и хранить данные учетных записей в другом месте (возможно, в общих настройках) http://developer.android.com/guide/topics/data/data-storage.html

14 голосов
/ 27 апреля 2010

С http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/:

Первая часть головоломки называется Аутентификатор учетной записи, который определяет, как учетная запись пользователя будет появляются в «Аккаунтах и ​​синхронизации» Настройки. Реализация учетной записи Аутентификатор требует 3 штуки: сервис, который возвращает подкласс AbstractAccountAuthenticator от метод onBind, активность для подсказки пользователь вводит свои учетные данные, и XML-файл, описывающий, как ваш аккаунт должен выглядеть при отображении на Пользователь. Вам также необходимо добавить android.permission.AUTHENTICATE_ACCOUNTS разрешение на ваш AndroidManifest.xml.

4 голосов
/ 11 сентября 2016

AccountManager хорош по следующим причинам:

  • Сначала необходимо сохранить несколько имен учетных записей с различными уровнями доступа к функциям приложения под одним типом учетной записи. Например, в приложении для потоковой передачи видео у одного может быть два имени учетной записи: одно с демонстрационным доступом к ограниченному количеству видео, а другое с полным доступом к месяцам ко всем видео. Однако это не главная причина использования Accounts, поскольку вы можете легко управлять этим в своем приложении, не прибегая к этой необычно выглядящей вещи Accounts. *
  • Другое преимущество использования Accounts состоит в том, чтобы избавляться от традиционной авторизации с использованием имени пользователя и пароля каждый раз, когда пользователь запрашивает авторизованную функцию, поскольку аутентификация происходит в фоновом режиме, а у пользователя запрашивается его пароль. только в определенном состоянии, которое я доберусь до него позже.
  • Использование функции Accounts в Android также устраняет необходимость определения собственного типа учетной записи. Вероятно, вы сталкивались с приложениями, использующими учетные записи Google для авторизации, что избавляет от необходимости создавать новую учетную запись и запоминать ее учетные данные для пользователя.
  • Accounts можно добавить независимо через Настройки → Аккаунты
  • Межплатформенной авторизацией пользователей можно легко управлять с помощью Accounts. Например, клиент может одновременно получить доступ к защищенному материалу на своем устройстве Android и ПК без необходимости повторных входов в систему.
  • С точки зрения безопасности, использование одного и того же пароля в каждом запросе к серверу допускает возможное прослушивание в незащищенных соединениях. Для предотвращения кражи пароля здесь недостаточно шифрования пароля.
  • Наконец, важной причиной использования функции Accounts в android является разделение двух сторон, вовлеченных в любой бизнес, зависящий от Accounts, так называемого аутентификатора и владельца ресурса, без ущерба для учетных данных клиента (пользователя) , Условия могут показаться довольно расплывчатыми, но не сдавайтесь, пока не прочитаете следующий абзац ... ?

Позвольте мне подробно остановиться на последнем примере приложения для потоковой передачи видео. Компания A является владельцем бизнеса по потоковому видео, заключившего договор с компанией B на предоставление ее отдельным членам премиальных потоковых услуг. Компания B использует метод имени пользователя и пароля для распознавания своего пользователя. Для компании A, чтобы распознать премиум-членов B, одним из способов было бы получить их список от B и использовать аналогичный механизм сопоставления имени пользователя и пароля. Таким образом, аутентификатор и владелец ресурса совпадают (Компания A). Помимо обязательства пользователей запоминать второй пароль, весьма вероятно, что они устанавливают тот же пароль, что и профиль их компании B для использования услуг от A. Это явно не выгодно.

Чтобы устранить вышеуказанные недостатки, был введен OAuth. В качестве открытого стандарта для авторизации в приведенном выше примере OAuth требует, чтобы авторизация была выполнена Компанией B (аутентификатор), выпуская некоторый токен под названием Access Token для соответствующих пользователей (третье лицо), а затем предоставляя Компании A (владельцу ресурса) знак Так что отсутствие знака означает отсутствие права на участие.

Я подробнее об этом и подробнее о AccountManager на моем сайте здесь.

This is a simple app using AccountManager

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...