2013-08-21 9 views
12

Próbuję użyć Google oauth do uwierzytelnienia użytkowników w mojej aplikacji na Androida. Następnie chciałbym wysłać go na mój serwer aplikacji, aby mógł łączyć się w dowolnym momencie z kalendarzem Google.uzyskiwanie tokena autoryzacji Google z systemu Android- zwrot z użyciem invalid_scope/Unknown error

Próbowałem użyć GoogleAuthUtil.getToken(getApplicationContext(), mAccountName, mScope);

następstwie tego artykułu: https://developers.google.com/accounts/docs/CrossClientAuth

gdy używam go z zakresu mScope = "oauth2:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"; uzyskać tokena, który jest ważny przez godzinę

Ale kiedy Próbuję uzyskać kod autoryzacji (dzięki czemu mogę uzyskać token odświeżania, który jest ważny przez dłuższy czas, przy użyciu mScope2 ="oauth2:server:client_id:{CLIENT_ID}.apps.googleusercontent.com"+ ":api_scope:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";

Otrzymuję wyjątki "invalid_scope" lub "Unknown".

Co robię źle?

EDIT: OK, po utworzeniu nowej aplikacji na konsoli Google API i dodaniu plus.login do zakresu otrzymuję kod, ale z jakiegoś powodu mój serwer nie może rozwiązać tego tokena. Podczas wiązania do rozwiązania serwera pojawia się błąd dotyczący adresu URL przekierowania. BTW, Kiedy robię przepływ sieci z tymi samymi parametrami, to działa.

Odpowiedz

11

OK, znalazłem rozwiązanie, spodziewałem się, że Google będzie mieć znacznie lepszą dokumentację dotyczącą pracy z Google Oauth i Androidem. Kilka rzeczy trzeba wiedzieć, aby pracować z Androidem i offline żeton

  1. Podczas tworzenia google identyfikator klienta Nie utworzyć aplikację usług przed utworzeniem aplikacja internetowa

  2. musi zawierać w swojej https://www.googleapis.com/auth/plus.login zakres

  3. Najdziwniejsze, aby rozwiązać jednorazowy kod autoryzacji na moim serwerze, musiałem użyć adresu URL przekierowania z danych identyfikatora klienta Android (który nawet nie wygląda jak adres URL), a nie od klienta sieci Web szczegóły w konsoli Google API.

+0

Nie robię tego. Czy mogę zobaczyć, jak to się stało – prashantwosti

+2

Czy Twój kod został wysłany gdziekolwiek przez przypadek (Github itp.)? Dostaję nieznany wyjątek i doprowadza mnie to do szaleństwa, nie wiem, czego mogę spróbować ... –

+1

Dziękuję bardzo. Trzeci krok jest rzeczywiście ważny. Utknąłem cały dzień, zastanawiając się, co jest nie tak z moją prośbą, a Google naprawdę powinno bardziej pracować nad dostarczaniem dobrej dokumentacji. –

Powiązane problemy