Ich bin ziemlich verärgert. Ich versuche, ein rundenbasiertes Multiplayer-Online-Spiel für Android mit Google App Engine in Java als Server zu erstellen.AuthToken von AccountManager in Android-Client funktioniert nicht mehr
Sie scheinen wie eine perfekte Passform. Android benötigt ein Google-Konto und GAE verwendet ein Google-Konto für die Authentifizierung, während es frei und skalierbar ist.
Also vor den Ferien konnte ich die Authentifizierung meiner GAE App von meinem Android Client mit der neuen AccountManager API in Android 2.0 bekommen. Mit dem folgenden Code können Sie die authToken des Benutzers Google-Konto zugreifen und es dann für die Authentifizierung verwenden, so dass der Benutzer nicht manuell müssen ihr Konto Benutzernamen und Passwort eingeben:
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();
Ich war dann in der Lage zu anhängen die resultierende AuthToken-Zeichenfolge an die entsprechende URL und ein gültiges Cookie erhalten, das ich dann für alle weiteren Anfragen verwenden könnte. Das einzige Problem ist, irgendwann letzte Woche hat es einfach aufgehört für mich zu arbeiten. Wenn ich versuche, den AuthToken aus dem obigen Code zu verwenden, erhalte ich keinen Cookie und mein Code löst eine NullPointerException für den fehlenden Cookie aus.
Wenn ich auf die alte Art und Weise zurückkomme, wenn der Benutzer seinen Google-Benutzernamen und sein Passwort manuell eingegeben hat und ich den AuthToken von "https://www.google.com/accounts/ClientLogin" bekomme, funktioniert es gut.
Bitte teilen Sie mir mit, dass jemand einen Android-Client für eine Google App Engine-App mithilfe des AuthTokens aus dem Google-Konto auf dem Telefon des Benutzers erstellt hat und mir Hinweise gibt, warum dies nicht mehr funktioniert.
Ich würde wirklich gerne diese Arbeit machen. Meine Alternativen bestehen darin, den Benutzer aufzufordern, seine Anmeldeinformationen einzugeben (was unhandlich ist und was er nicht tun sollte) oder mit einer anderen Lösung für den Server zu gehen.
Vielen Dank im Voraus.
Können wir das auf einem Emulator testen läuft Google APIs? – Gopinath
Für diejenigen, die sich fragen, was "die passende URL" ist, und wie man "einen gültigen Cookie erhält", ist es in [diesem Blog-Beitrag] (http: //blog.notdot.net/2010/05/Authentifizieren-gegen-App-Engine-von-einer-Android-App), die auch die AuthToken ungültig macht – thomas88wp