2014-04-03 7 views
5

Ich habe eine private App, die völlig offline funktioniert (dh keine Serverdaten gesendet/erhalten), aber ich muss es nur für Benutzer einschränken mit einem gültigen Google-Konto auf dem Telefon. Ich kann sicherstellen, dass ein passendes Konto am Telefon vorhanden ist, indem ich eine Liste von Telefonkonten durchgebe, aber ist es möglich, zu überprüfen, ob das Konto gültig/authentifiziert ist, ohne dass ich den vollständigen OAuth-Prozess einführen muss? Ich brauche keinen Cookie oder sende keine Daten an einen Server.Überprüfen Sie, ob ein Gerät Google-Konto authentifiziert ist, nur dann Zugriff auf meine Offline-App

Idealerweise möchte ich Folgendes tun: 1. Fragen Sie den Account Manager nach einem Authentifizierungs-Token. 2. Wenn der Token empfangen wurde, erlauben Sie den Zugriff auf die App. Gegenwärtig kann man ohne Überprüfung über den Account Manager ein gefälschtes Konto am Telefon erstellen und dann Zugang erhalten, selbst wenn sie eine E-Mail/ein Passwort eingeben und sie niemals autorisiert werden.

Ich hoffe, ich habe das klar erklärt. Da meine App keine Netzwerkverbindung hat, möchte ich vermeiden, eigene Netzwerk-/OAUTH-Prüfungen hinzuzufügen.

+1

Was ist Ihrer Meinung nach ein "Fake Account"?Um ein Google-Konto zu registrieren, benötigen Sie eine gültige Kombination aus Benutzername und Passwort, die online überprüft werden. Auch ein Token zu erhalten, kann Online-Zugriff erfordern, wenn man nicht zwischengespeichert wird, so dass dies nicht 'offline' funktioniert. –

+0

@NikolayElenkov Ich würde sagen, ein gefälschter Account ist einer, der eingerichtet wurde und nicht authentifiziert - ich konnte es tun Es kann leicht und in der Tat umgehen eine einfache Überprüfung auf der Grundlage von Konten. – sham

+0

Sie können kein Google-Konto hinzufügen, wenn Sie sich nicht einmal zu einem bestimmten Zeitpunkt authentifizieren. –

Antwort

5

Was dazu:

AccountManager manager = AccountManager.get(this); 
Account[] accounts = manager.getAccountsByType("com.google"); 
final boolean connected = accounts != null && accounts.length > 0; 

Der angeschlossene boolean zeigt an, ob es ein angeschlossen Google-Konto im Telefon ist.

der Tat gibt es keine Kontrolle auf dem Token, aber wenn das Konto auf dem Handy registriert ist, dann Google überprüft, bevor der Server-Seite, zu validieren ...

+1

Das Passwort wurde möglicherweise geändert, das Konto wurde möglicherweise gehackt, usw., daher sind die aufgeführten Konten nicht unbedingt gültig. –

+0

Ich muss das testen, aber ich würde annehmen, wenn das Passwort geändert oder der Account deaktiviert wurde, dann würde etwas anderes auf dem Gerät das Token ungültig machen, um zu bewirken, dass der verbundene Boolean falsch wird? Wird die Ergebnisse in ein paar Tagen veröffentlichen. – sham

+0

Es gibt keine unmittelbare Rückmeldung, Sie müssen versuchen, ein Token zu verwenden, um herauszufinden, dass es ungültig ist. BTW die 'connected' Variable ist falsch benannt, es zeigt einfach, dass mindestens ein Konto existiert. –

2

Wie über die Implementierung von Google Plus Anmelde-API? Es stellt nicht wirklich einen vollständigen OAuth-Prozess her, da G + ziemlich einfach ist, selbst wenn es tatsächlich auf OAuth aufgebaut ist.

Ich benutze das in einer App, die ich entwickle, die auch keinen Online-Zugriff erfordert (außer für anfängliche G + Login-Zugang).

Was ich mache ist das erste Mal, dass die App ausgeführt wird Ich präsentiere den G + Login Button. Nachdem der Benutzer darauf geklickt hat, kann er die Berechtigungsanfrage von meiner App akzeptieren (um Benutzer-E-Mails und einige grundlegende Profilinformationen abzurufen, dh minimale Erlaubnis benötigt) und wenn der API-Client korrekt verbindet, präsentiere ich den Benutzer mit dem Dashboard oder zu Hause Bildschirm und richten Sie außerdem ein Flag in SharedPreferences für den Benutzer ein, der bereits autorisiert ist.

Auf diese Weise erinnert sich der Benutzer beim nächsten Start der App daran, dass er bereits autorisiert war und fordert den API-Client auf, eine Verbindung herzustellen (nur wenn der Zugriff von der Play Store-Website des Kontos widerrufen wurde). verifizieren Sie, dass die Benutzerberechtigung noch gültig ist), und alles sollte funktionieren. Wenn der Benutzer den Zugriff auf sein Google+ Profil in meiner App widerruft, lösche ich die Markierung, damit das nächste Mal, wenn der Benutzer es ausführt, die Autorisierung erneut angefordert wird.

Es ist eigentlich sehr einfach und zumindest für meinen Anwendungsfall (der Ihrem sehr ähnlich klingt) funktioniert es für das, was ich will, mit minimalem Benutzereingriff.

empfehle ich Ihnen sehr so ​​etwas wie dieses Google Plus login tutorial

bearbeiten ausprobieren: Sie können auch diese Frage prüfen ich vor gefragt, über working with multiple activities that need Google Plus functionality

Auch mit dieser Methode zu sagen vergessen, dass Sie immer sicher sind, dass Das Benutzerkonto ist immer gültig, da Sie direkt mit den Servern von Google nach seiner Gültigkeit suchen.

+0

Vielleicht eine dumme Frage, aber wo Ihre Benutzer/Google-Konten auch G + Benutzer? Mußten sie sich zuerst bei G + anmelden, um diese Methode zu verwenden? – sham

+0

Nachdem wir uns den Google Plus-Login angesehen haben, scheint dieser Prozess fast identisch mit dem normalen Google oAuth-Prozess zu sein, da beide die Verwendung der API-Konsole und der play-Dienste-Bibliothek erfordern. Ich hatte gehofft, dies ohne api-Konsole zu tun, so dass es nicht ganz das ist, wonach ich suche, aber realisiere, dass es unvermeidlich sein kann, ohne das Risiko von veralteten Token. – sham

+0

Es ist ein sehr ähnlicher Prozess wie bei der OAuth-Implementierung, aber ich fand es ziemlich einfach zu implementieren. Am Ende wird es jedoch ein Kompromiss sein zwischen wie einfach Sie den Login-Prozess halten wollen und wie sicher und genau es sein wird. Wenn Sie sich um einen Benutzer kümmern, der versucht, das System zu spielen, verwenden Sie am besten die bereitgestellten APIs. Es wird nicht einfacher (und korrekter) als das, denke ich. Wenn Sie sich dafür entscheiden, Ihre eigene Lösung zu entwickeln, besteht die Möglichkeit, dass es Möglichkeiten gibt, Fehler zu beheben, die es letztendlich nicht wert sind. – Acapulco

Verwandte Themen