Ich schreibe eine Android-App, die mit einem Remote-Server kommuniziert, und ich möchte App-Nutzern erlauben, sich mit den Google-Anmeldeinformationen auf ihrem Server anzumelden Der Nutzer kann sein Google-Passwort überall in meiner App eingeben. Wenn beispielsweise das Telefon (Android) des Benutzers mit "[email protected]" konfiguriert wurde und sie dann meine App installieren und ausführen, wird sie in meiner App mit dem folgenden Dialogfeld angezeigt: "Möchten Sie sich als someguy @ anmelden? gmail.com? ", und wenn sie auf OK klicken, haben sie eine ID auf meinem Server eingerichtet, die weiß, dass ihre E-Mail-Adresse [email protected] ist, wie von Google selbst bestätigt.Google-Kontoautorisierung innerhalb einer Android-App
Ich habe weit verbreitete und vielfältige Teilrezepte gefunden, wie man das angehen kann, einschließlich googles eigener oauth2-Dokumentation, aber habe kein Verständnis dafür entwickelt, wie alles möglich ist.
Ich habe Android-Code, der den AccountManager verwendet, um herauszufinden, welche Google-Konten auf einem bestimmten Telefon sind. Ich frage den Benutzer nach dem Google-Konto, mit dem er sich anmelden möchte, und erhalte dann ein Autorisierungs-Token zurück.
Über diesen Punkt hinaus spinn ich meine Räder. Die Rezepte, die ich geschaut haben zu scheinen für mein Tun eine http-get dieser Form zu nennen:
http://<myWebServer>.com/_ah/login?continue=<someUrlIChoose>&auth=<authToken>
..., die (a) in ist unbefriedigend, dass es appengine um genau zu sein scheint, und ich möchte die Freiheit um dies auf jedem beliebigen Backend meiner Wahl auszuführen und (b) sogar mit appengine zu experimentieren, scheint die appengin-Instanz, die ich eingerichtet habe, überhaupt nicht signalisiert zu werden, dh die Logs zeigen nun Anfragen dazu (ich hatte gehofft die someURlIChoose-URL wäre mit etwas aufgerufen worden) ... daher keine Möglichkeit, über die Gültigkeit des Tokens informiert zu werden.
Spezifische Fragen wären:
- Was mache ich mit den Auth-Token ... mache ich es auf meinen Server zu senden, und irgendwie meinen Server Kontakt Google hat die Token Gültigkeit für das überprüfen angegebenes Konto? Oder gibt es einige Backchannel Kommunikation, die bereits (in diesem Stadium der Prozess) von den Google-Servern stammen soll, um meinen Server zu informieren, dass dieser Token gültig ist (und wenn ja, wie stelle ich das auf)? Oder etwas sonst?
- Bin ich richtig zu der Annahme, dass dieser Prozess in der Kontext eines Back-End (nicht nur appengine) machbar sein könnte?
- Ist oauth2 was ich verwenden soll (im Gegensatz zu oauth1 oder etwas sonst)? Alles, was ich lese, scheint zu implizieren, dass Googles Unterstützung für oauth2 "experimentell" ist ... aber ich habe nicht festgestellt, ob solche Behauptungen aktuell oder alt sind; und selbst wenn aktuell, hat Google eine Geschichte der Aufbewahrung verschiedener Produkte in permanenter nicht-endgültige Form (z. B. ewige Beta), so dass ich nicht weiß, was Sie dazu schließen.
- Alles andere, die ...