web-dev-qa-db-fra.com

Que devrais-je utiliser Android AccountManager pour?

J'ai vu AccountManager dans le SDK Android et il est utilisé pour stocker les informations de compte. Par conséquent, je ne trouve aucune discussion générale sur son objectif. Quelqu'un est-il au courant de discussions utiles? Quel est l'objectif de AccountManager et ce qu'il vous achète? Des avis sur le type de comptes auquel il convient? C’est là que vous placeriez les informations de compte de votre utilisateur pour un service Web général?

147
Phil

Cette question est un peu ancienne, mais je pense qu’elle est toujours d’un bon intérêt.

AccountManager, SyncAdapter et ContentProvidergo vont ensemble.

Mais tu peux:

Avec AccountManager/SyncAdapter/ContentProvider:

  • AccountManager donne aux utilisateurs un point central (Paramètres> Comptes) pour définir leurs informations d'identification
  • Android décide quand la synchronisation peut être effectuée via SyncAdapter. Cela peut être utile pour optimiser la batterie (par exemple, aucune synchronisation n'est effectuée lorsque le réseau est en panne)
  • ContentProvider est un moyen pratique de partager des données entre applications Remarque: il existe autres méthodes de communication interprocessus sous Android .
  • ContentProvider planifie l'accès à la base de données dans un thread en arrière-plan Le AsyncQueryHanlder permet d'interroger le ContentProvider dans un thread en arrière-plan, empêchant ainsi les erreurs ANR (Application Not Responsive) sans vous obliger à gérer explicitement le thread.
  • ContentProvider est lié à l'observateur de ContentResolver: cela signifie qu'il est facile de notifier les vues lorsque le contenu est modifié

Ligne de fond : le cadre AccountManager/SyncAdapter/ContentProvider vous aide si vous souhaitez synchroniser des données à partir d'une ressource Web. Fake/ implémentations Dumb sont requis sur l’API 7. Aussi

  • Si vous souhaitez uniquement stocker des données, vous devez envisager un mécanisme plus simple pour le stockage des données
  • Si vous devez seulement extraire une ressource unique, vous pouvez utiliser un AsyncTaskLoader
  • Si vous souhaitez charger des images de manière asynchrone, vous pouvez utiliser des bibliothèques spécialisées telles que Square Picasso
  • Si vous voulez seulement exécuter du code à un moment donné, vous pouvez considérer un service/alarme
  • disponible uniquement à partir de l'API> = 7 (cela n'a plus d'importance)

Enfin, si vous utilisez SyncAdapter, envisagez sérieusement Firebase Cloud Messaging (anciennement Google Cloud Messaging), également appelé "Notifications push", pour disposer de mises à jour plus récentes et d'une utilisation optimisée de la batterie.

93
rds

La classe AccountManager est intégrée à vos comptes téléphoniques. Donc, si vous suivez tous les guides et que vous le faites fonctionner correctement, vous verrez vos comptes dans le menu "Paramètres-> comptes et synchronisation". De là, vous pouvez les personnaliser ou même les supprimer. De plus, accountManager dispose d'un cache des tickets d'authentification pour vos comptes. Ceci peut être utilisé aussi si vous ne prévoyez pas de synchroniser votre compte (pour autant que je sache).

Si vous ne souhaitez pas que vos comptes apparaissent dans ce menu, vous ne devez pas utiliser AccountManager et stocker les données des comptes ailleurs (peut-être dans les préférences partagées). http://developer.Android.com/guide/topics /data/data-storage.html

23
Gab

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

Le premier élément du puzzle est appelé un authentificateur de compte, qui définit l’apparence du compte de l’utilisateur dans les paramètres "Comptes et synchronisation". L'implémentation d'un authentificateur de compte nécessite 3 éléments: un service qui renvoie une sous-classe de AbstractAccountAuthenticator à partir de la méthode onBind, une activité pour Demander à l'utilisateur de saisir ses informations d'identification et un fichier xml décrivant l'apparence que devrait avoir votre compte lorsqu'il est affiché à l'utilisateur. Vous devrez également ajouter l’autorisation Android.permission.AUTHENTICATE_ACCOUNTS à votre AndroidManifest.xml.

14
Macarse

Le AccountManager est bon pour les raisons suivantes:

  • La première consiste à stocker plusieurs noms de compte avec différents niveaux d’accès aux fonctionnalités de l’application sous un seul type de compte. Par exemple, dans une application de diffusion vidéo en continu, l'un peut avoir deux noms de compte: l'un avec un accès de démonstration à un nombre limité de vidéos et l'autre avec un accès d'un mois complet à toutes les vidéos. Cependant, ce n’est pas la raison principale pour utiliser Accounts, car vous pouvez facilement le gérer dans votre application sans avoir besoin de cette jolie chose Accounts….
  • L'autre avantage d'utiliser Accounts est de supprimer l'autorisation traditionnelle avec nom d'utilisateur et mot de passe chaque fois qu'une fonctionnalité autorisée est demandée par l'utilisateur, car l'authentification a lieu en arrière-plan et l'utilisateur est invité à entrer son mot de passe. seulement dans certaines conditions, que j'y reviendrai plus tard.
  • L'utilisation de la fonction Accounts dans Android) vous évite également de définir votre propre type de compte. Vous avez probablement rencontré les applications utilisant des comptes Google à des fins d'autorisation, ce qui vous évite bien des tâches un nouveau compte et en mémorisant ses informations d'identification pour l'utilisateur.
  • Accounts peut être ajouté indépendamment via Paramètres → Comptes
  • L'autorisation utilisateur multiplate-forme peut être facilement gérée avec Accounts. Par exemple, le client peut accéder au contenu protégé en même temps dans son appareil et son PC Android), sans qu'il soit nécessaire de se connecter régulièrement.
  • Du point de vue de la sécurité, l’utilisation du même mot de passe dans chaque demande adressée au serveur permet d’écouter les connexions non sécurisées. Le cryptage du mot de passe n'est pas suffisant ici pour empêcher le vol de mot de passe.
  • Enfin, une raison importante pour utiliser la fonctionnalité Accounts dans Android) est de séparer les deux parties impliquées dans toute activité dépendante de Accounts, appelé ainsi authentificateur et ressource. propriétaire, sans compromettre les informations d'identification du client (utilisateur). Les termes peuvent sembler plutôt vagues, mais n'abandonnez pas avant d'avoir lu le paragraphe suivant… ????

Laissez-moi élaborer sur ce dernier avec un exemple d'application de streaming vidéo. La société A est titulaire d’une activité de streaming vidéo en vertu d’un contrat avec la société B afin de fournir à certains de ses membres des services de streaming premium. La société B utilise une méthode de nom d'utilisateur et de mot de passe pour reconnaître son utilisateur. Pour que la société A reconnaisse les membres premium de B, une solution consiste à en obtenir la liste à partir de B et à utiliser un mécanisme similaire de correspondance nom d'utilisateur/mot de passe. De cette façon, l'authentificateur et le propriétaire de la ressource sont les mêmes (société A). Hormis l'obligation pour les utilisateurs de se souvenir d'un deuxième mot de passe, il est fort probable qu'ils aient défini le même mot de passe que le profil de leur entreprise B pour utiliser les services de A. Ceci n'est évidemment pas favorable.

Pour pallier les inconvénients ci-dessus, OAuth a été introduit. En tant que norme ouverte pour l'autorisation, dans l'exemple ci-dessus, OAuth exige que l'autorisation soit effectuée par la société B (authentificateur) en émettant un jeton appelé jeton d'accès pour les utilisateurs éligibles (tiers), puis en fournissant à l'entreprise A (propriétaire de la ressource) le jeton, donc pas de jeton signifie pas d'éligibilité.

J'ai développé plus sur ceci et plus sur AccountManager sur mon site Web ici.

This is a simple app using AccountManager

4
Ali Nem