我不確定您嘗試執行的操作可能是通過您引用的文章中使用的App Engine OAuthService實現的。另外它聲明,AppEngine OAuthService只支持OAuth 1,但Android只支持OAuth 2 :)所以你擰了。
如果你想要做跨Android的 - 應用程序引擎的認證,我會做的是:
- 在Android中:獲得來自的AccountManager用戶信息API(範圍=
https://www.googleapis.com/auth/userinfo.email
和https://www.googleapis.com/auth/userinfo.profile
)的訪問令牌。
- 將訪問令牌傳遞到App Engine中的請求的URL參數中(請確保您使用HTTPS以避免截取!)。
- 在App Engine端:使用訪問令牌使用UserInfo API來讀取用戶的身份。這基本上是使用OpenID Connect!
- 然後,您可以使用從UserInfo API獲取的信息對用戶進行身份驗證。您從UserInfo API獲得的電子郵件和用戶ID等同於您從AppEngine的UserService =>您可以信任的電子郵件和用戶ID!
PS:I中所述獲得在this article使用Android的AccountManager OAuth的2個令牌。這是寫在冰淇淋前三明治,但我跳它仍然有效。基本上authTokenType
需要爲oauth2:{scopes}
,因此例如oauth2:https://www.googleapis.com/auth/tasks
爲Tasks API。現在可能有更好的方法來做到這一點。
你是否看了 「App Engine的連接Android項目」 Eclipse插件的選項?它會自動爲您生成必要的代碼。 –
我沒有真正使用它,但是,IIRC,範圍是你的整個應用程序。所以像'http://myapp.appspot.com' –
我已經看過「App Engine連接的Android項目」,它使用ClientLogin,而不是OAuth。作爲範圍的完整域名可能工作,我會嘗試。 –