Je suis assez exaspéré. J'essaye de construire un jeu en ligne multijoueur au tour par tour pour Android en utilisant Google App Engine en Java comme serveur.AuthToken de AccountManager dans le client Android ne fonctionne plus
Ils semblent être parfaits. Android nécessite un compte Google, et GAE utilise un compte Google pour l'authentification, tout en étant gratuit et évolutif. Donc, avant les vacances, j'ai pu obtenir l'authentification de mon application Android auprès de mon application GAE à l'aide de la nouvelle API AccountManager dans Android 2.x Le code suivant vous permet d'accéder au AuthToken du compte Google de l'utilisateur et ensuite l'utiliser pour l'authentification, de sorte que l'utilisateur n'a pas à entrer manuellement leur nom d'utilisateur et mot de passe:
AccountManager mgr = AccountManager.get(this);
Account[] accts = mgr.getAccountsByType("com.google");
Account acct = accts[0];
AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "ah", null, this, null, null);
Bundle authTokenBundle = accountManagerFuture.getResult();
String authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString();
J'étais alors en mesure d'ajouter la chaîne AuthToken résultante à l'URL appropriée et obtenir un cookie valide que je pourrais ensuite utiliser pour toutes les autres demandes. La seule chose est, la semaine dernière, il a juste cessé de travailler pour moi. Maintenant, lorsque j'essaie d'utiliser le AuthToken à partir du code ci-dessus, un cookie n'est pas renvoyé et mon code renvoie une exception NullPointerException pour le cookie manquant. Lorsque je reviens à l'ancienne méthode, lorsque l'utilisateur saisissait manuellement son nom d'utilisateur et son mot de passe Google et que j'obtenais l'authentification AuthToken à partir de "https://www.google.com/accounts/ClientLogin", cela fonctionne très bien. S'il vous plaît dites-moi quelqu'un qui a construit un client Android pour une application Google App Engine en utilisant le AuthToken du compte Google sur le téléphone de l'utilisateur, et me dire pourquoi cela ne fonctionne plus.
Je voudrais vraiment faire ce travail. Mes alternatives sont de demander à l'utilisateur d'entrer ses informations d'identification (ce qui est maladroit, et ce qu'elles ne devraient pas avoir à faire), ou d'aller avec une autre solution pour le serveur.
Merci d'avance.
Peut-on tester cela sur un émulateur en cours d'exécution API Google? – Gopinath
Pour ceux qui se demandent quelle est «l'URL appropriée» et comment «obtenir un cookie valide», il est parfaitement couvert dans [ce blog] (http: //blog.notdot.net/2010/05/Authentification-contre-App-Engine-à partir d'une application Android), qui couvre également l'invalidation du authToken – thomas88wp