Android: Überprüfen Sie den Google-Kontonamen des Geräts auf dem Server

8

Ich entwickle eine Android-App, die ein Google-Konto verwendet, das auf dem Gerät verfügbar ist, um Benutzer für die serverseitige Komponente zu authentifizieren.

Ich sende den Namen des Google-Kontos (Google Mail-Adresse) an den Server, aber um es mit Google auf dem Server zu verifizieren, fordere ich ein OAUTH-Token auf dem Android-Gerät an und sende es auch an den Server.

Das Problem ist, dass ich, obwohl ich keinen Zugriff auf zusätzliche Benutzerinformationen benötige, den oauth Email-Bereich verwenden muss, der einen Bestätigungsdialog öffnet. Ich mag diesen Dialog nicht, da ich überprüfen möchte, dass der Kontoname nicht auf Benutzerinformationen zugreift.

Es gibt auch AccountManager.getPassword(account) , aber ich mag es nicht, zu kommunizieren oder das Benutzerpasswort zu benutzen.

Es ist auch möglich, WebView zu verwenden und Benutzer wie eine Web-App zu authentifizieren (zB mit OpenId), aber es scheint keine optimale Lösung auf einem Gerät zu sein.

Gibt es eine andere / bessere Möglichkeit, den Namen des Gerätekontos auf dem Server zu überprüfen?

    
Ali Shakiba 05.10.2012, 10:01
quelle

4 Antworten

1

Dieser Artikel gibt eine detaillierte - mit Quellcode - Beschreibung des Verifizierungsprozesses:

Überprüfen von Back-End-Calls von Android Apps von Tim Bray

  

Kurzversion: Sie verwenden die GoogleAuthUtil-Klasse, verfügbar über   Google Play-Dienste, um eine Zeichenfolge namens "ID-Token" abzurufen. Sie   Senden Sie das Token an Ihr Backend und Ihr Backend kann es benutzen   schnell und billig überprüfen, welche App es gesendet hat und wer die verwendet hat   App.

Mit den Informationen in diesem Artikel war es für mich einfach, Client- und Server-seitigen Android- und JavaEE-Code zu implementieren.

    
mjn 08.11.2014, 09:51
quelle
3

Verwenden Sie den AccountManager oder die Google Play-Dienste, um ein OAuth2-Token für das Nutzerprofil zu erhalten (Umfang: Ссылка ). Überprüfen Sie es anschließend mithilfe des Google-Endpunkts (https://accounts.google.com/o/oauth2/tokeninfo) und erhalten Sie optional Nutzerinformationen. Eine Beispiel-App finden Sie hier: Ссылка . Sie scheinen etwas Ähnliches zu tun, und wenn das der richtige (oder zumindest empfohlene) Weg ist, dies zu tun. Übrigens, Sie können das Benutzerkennwort nicht abrufen, da Sie nicht mit demselben Zertifikat wie der Kontoanbieter signiert sind.

Die einzige andere (zuverlässige) Möglichkeit besteht darin, dem Benutzer eine E-Mail mit einem zufälligen Token an seine GMail-Adresse zu senden und sie in die App eingeben zu lassen. Auf diese Weise können Sie überprüfen, ob sie Zugriff auf die E-Mail haben, also müssen sie ihnen gehören (es sei denn, sie haben das Gerät einer anderen Person gestohlen).

Oder Sie können einfach darauf vertrauen, dass, wenn der Benutzer das Konto auf seinem Gerät registriert hat, es in der Tat sein Konto, weil sie mindestens einmal bei der Aktivierung des Geräts authentifiziert. Dann verwenden Sie einfach die Google Mail-Adresse, die für Ihre App ausreicht oder auch nicht.

    
Nikolay Elenkov 12.10.2012 07:03
quelle
2

Es ist nicht möglich, Google-Konten ohne ein gültiges Token zu bestätigen. Vielleicht möchten Sie auf die offizielle Android-Dokumentation unten verweisen.

Ссылка

    
Aravind Sundar 10.10.2012 02:19
quelle
1

Ich würde dies vorschlagen:

  • Auf dem Gerät

    1. Wählen Sie ein Konto (erhalten Sie die E-Mail-Adresse)

    2. Fordert ein OAuth-Token an

  • Senden Sie die E-Mail + Token an den Server

  • Auf dem Server

    1. Verwenden Sie die API von Google, um grundlegende Benutzerinformationen vom Token abzurufen

    2. Vergleichen Sie die von google zurückgegebene E-Mail-Adresse mit der erhaltenen Adresse

shkschneider 13.10.2012 21:50
quelle

Tags und Links