I have Android client to my AppEngine server, both using Google Accounts. I would like to use AccountManager for getting accessToken for OAuth. So far I'm using ClientLogin, but I would like to switch to OAuth.
Setting up OAuth on AppEngine is easy - I followed this article. But the client side is a mystery, in particular I don't know what to use for scope, in AccountManager terms authTokenType. For ClientLogin, I'm using "ah" for authTokenType. But what about OAuth?
You can get an ID token from the metadata server when your code is running on the following Google Cloud services: Compute Engine. App Engine standard environment. App Engine flexible environment.
OAuth 2 basics principles This is a 3 steps authentication, you register your application in the google console and then receive your clientID. then you talk to an authorization server with your clientID, which returns you a code, using this code, you then can talk to the api server and ask for the token.
As of today you can use Google Play Services API on android to do Oauth 2.0 authentication on android. You could then use the method described by @nivco to get the userinfo on appengine. I have not done this yet, but I plan tp do exactly what your talking about.
https://developers.google.com/android/google-play-services/authentication
I'm not sure what you are trying to do is possible through the App Engine OAuthService used in the article you are referring to. Also it is stated that AppEngine OAuthService only supports OAuth 1 but Android only supports OAuth 2 :) so you are screwed.
If you want to do cross Android - App Engine authentication, what I would do is:
https://www.googleapis.com/auth/userinfo.email
and https://www.googleapis.com/auth/userinfo.profile
) from the AccountManager.PS: I described getting OAuth 2 tokens using the Android AccountManager in this article. It was written pre-Ice Cream Sandwich but I'm hopping it is still valid. Basically the authTokenType
needs to be oauth2:{scopes}
, so for instance oauth2:https://www.googleapis.com/auth/tasks
for the Tasks API. There might be some better ways to do this now.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With