2013-07-13 17 views
7

Jeśli masz aplikację na Androida, która wymaga rejestracji użytkownika i chcesz zezwolić użytkownikom na logowanie się przez Google, w jaki sposób poradzisz sobie z tym?Najlepszy sposób na umożliwienie użytkownikom dostępu do Twojej aplikacji przy użyciu ich danych logowania Google

Chciałbym wyłączyć z dyskusji dyskusję Google+. Nie używamy też danych logowania użytkownika do uzyskiwania dostępu do interfejsów Google API i nie jestem zainteresowany dodatkowym dostępem do funkcji społecznościowych Google+.

Wydaje się, że kilka opcji:

Zastosowanie OAuth2.0 uwierzytelniania

Udokumentowane w Google OAUth2 Login stronie

To naprawdę nie wspominając Android, ale jest (częściowo) na podstawie tokenów dostępu OAuth2, ale, co ważniejsze, na walidacji identyfikatora sieci WWW JSON id_token.

Ten sposób uwierzytelniania użytkowników obejmuje także uruchomienie WebView, aby umożliwić użytkownikom zalogowanie się na swoje konto Google i dość złożoną weryfikację identyfikatora id_token.

Zastosowanie OAuth2/Google Play

Jest próbka w Google Play, która skupia się bardziej na zezwolenia. Używa GoogleAuthUtil.getToken do pobrania hasła access_token. Częścią tego jest zdecydowanie uwierzytelnienie, ponieważ w oknie dialogowym pojawia się komunikat "Zaloguj się do ...".

enter image description here

Am I słusznie przypuszczać, że jest to zła praktyka, aby korzystać przepływ OAuth2.0 z access_token jako mechanizm uwierzytelniania? (przechowywanie tokena dostępu jako tokenu uwierzytelniania).

Wspieranie Facebook/Twitter loginy

Powód pytam jest ze względu na sposób Twitter i Facebook zalecamy wdrożyć "Zaloguj się z ..." procesu uwierzytelniania

To również wydaje się być oparte wyłącznie na tokenach dostępu OAuth.

Jakieś inne opcje, o których nie wiem, pozwalają na uwierzytelnianie użytkowników za pomocą konta Google?

Odpowiedz

4

Co trzeba jest to http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html

czyli uzyskać identyfikator Reklamowe i użyć go do logowania do backend twojej aplikacji.

Masz rację. Ogólnie rzecz biorąc, używanie tokenu dostępu do uwierzytelniania jest złym pomysłem.Zrobiliśmy wiele prezentacji, aby ostrzec twórców o tym. https://docs.google.com/presentation/d/1klTZheiQIhcty6MKvTYS12cw1Vyn4T1R4d60QCRYM60/edit?usp=drive_web

Jeśli nie ma innej opcji, a jedna ma token dostępu, może być możliwa dodatkowa weryfikacja, aby użyć jej do zalogowania się i złagodzenia potencjalnych problemów związanych z bezpieczeństwem. Jest powód, dla którego Token ID został zaprojektowany w OpenIDCOnnect i który ma służyć do uwierzytelniania.

+0

Sprawdź też tę książkę kucharską https://developers.google.com/accounts/cookbook/platforms/Hybrid – nvnagr

+0

Rzeczywiście wygląda to na dobry sposób robienia tego na Androidzie, który nie obejmuje Google Plus. (Jest zależny od Usług Google Play) +1 również w przypadku prezentacji. – ddewaele

+1

Jeśli chcę użyć tego w typie przepływu "Zaloguj się przy użyciu konta Google", co przechowujesz w bazie danych backendu? Czy wystarczy dodać e-mail użytkowników do bazy danych z flagą wskazującą, że jest to uwierzytelnienie za pomocą tokenów identyfikatora Google (po otrzymaniu i zweryfikowaniu początkowego tokena identyfikacyjnego), a następnie po prostu poprzeć każdy identyfikator IDToken, który jest wysyłany na każdym kolejnym toku Wywołanie REST). Nie ma potrzeby przechowywania/buforowania tych IDTokens w samym backendu, prawda? – ddewaele