Nie jestem pewien, co próbujesz zrobić za pomocą App Engine OAuthService w artykule, do którego się odwołujesz. Stwierdzono również, że AppEngine OAuthService obsługuje tylko OAuth 1, ale Android obsługuje tylko OAuth 2 :), więc jesteście wkręceni.
Jeśli chcesz zrobić przekrój Android - uwierzytelnianie App Engine, co chciałbym zrobić, to:
- W Androidzie: uzyskać token dostępu do API userinfo (zakres =
https://www.googleapis.com/auth/userinfo.email
i https://www.googleapis.com/auth/userinfo.profile
) z AccountManager.
- Przekaż token dostępowy do App Engine w paramencie URL żądania wysyłanego z Androida do AppEngine (upewnij się, że używasz HTTPS, aby uniknąć przechwycenia!).
- Po stronie App Engine: użyj tokena dostępu, aby odczytać tożsamość użytkownika za pomocą UserInfo API. Jest to zasadniczo za pomocą OpenID Connect!
- Następnie można użyć informacji uzyskanych z interfejsu API UserInfo w celu uwierzytelnienia użytkownika. Adres e-mail i identyfikator użytkownika otrzymasz z interfejsu API UserInfo jest równoważny adresowi e-mail i identyfikatorowi użytkownika, który otrzymasz od usługi UserService AppEngine => możesz jej zaufać!
PS: Opisałem coraz OAuth 2 żetony za pomocą Android AccountManager w this article. Napisano przed-lodową kanapkę, ale mam nadzieję, że nadal jest ważna. Zasadniczo authTokenType
musi być oauth2:{scopes}
, więc na przykład oauth2:https://www.googleapis.com/auth/tasks
dla Tasks API. Być może istnieją lepsze sposoby na zrobienie tego teraz.
Pan spojrzał na "App Engine połączony android projekt" opcję wtyczki Eclipse? Automatycznie generuje potrzebny ci kod. –
Nie używałem go, ale, IIRC, zasięg to cała twoja aplikacja. Tak więc coś w stylu "http://myapp.appspot.com" –
Zajrzałem do "projektu Android połączonego z App Engine" i używa ClientLogin, a nie OAuth. Pełna domena jako zasięg może działać, spróbuję tego. –