14

AppEngine サーバーへの Android クライアントがあり、どちらも Google アカウントを使用しています。OAuth のaccessTokenを取得するために AccountManager を使用したいと考えています。今のところClientLoginを使っていますが、OAuthに切り替えたいと思っています。

AppEngine での OAuth の設定は簡単です。この記事に従いました。しかし、クライアント側は謎です。特に、 AccountManager 用語authTokenTypeで、スコープに何を使用すればよいかわかりません。ClientLogin では、 authTokenTypeに "ah" を使用しています。しかし、OAuth はどうでしょうか。

4

2 に答える 2

10

今日の時点で、Android で Google Play Services API を使用して、Android で Oauth 2.0 認証を行うことができます。その後、@nivco で説明されているメソッドを使用して、appengine のユーザー情報を取得できます。私はまだこれを行っていませんが、あなたが話していることを正確に行う予定です.

https://developers.google.com/android/google-play-services/authentication

于 2012-09-27T17:16:13.363 に答える
6

あなたが参照している記事で使用されている App Engine OAuthService を介して、あなたが何をしようとしているのかわかりません。また、AppEngine OAuthService は OAuth 1 のみをサポートするが、Android は OAuth 2 のみをサポートすると述べられている :) ので、あなたはうんざりしています。

クロス Android - App Engine 認証を行いたい場合は、次のようにします。

  1. Android の場合: AccountManager からUserInfo API (スコープ =https://www.googleapis.com/auth/userinfo.emailおよび)のアクセス トークンを取得します。https://www.googleapis.com/auth/userinfo.profile
  2. Android から AppEngine へのリクエストの URL パラメーターでアクセス トークンを App Engine に渡します (傍受を避けるために、必ず HTTPS を使用してください!)。
  3. App Engine 側: アクセス トークンを使用して、UserInfo APIを使用してユーザーの ID を読み取ります。これは基本的に OpenID Connect を使用しています。
  4. 次に、UserInfo API から取得した情報を使用して、ユーザーを認証できます。UserInfo API から取得する電子メールとユーザー ID は、AppEngine の UserService から取得する電子メールとユーザー ID と同等です => 信頼できます!

PS:この記事では、Android AccountManager を使用して OAuth 2 トークンを取得する方法について説明しました。アイス クリーム サンドイッチの前に書かれていましたが、まだ有効だと思います。基本的に は であるauthTokenType必要があるoauth2:{scopes}ため、たとえばoauth2:https://www.googleapis.com/auth/tasksTasks API の場合です。今これを行うためのより良い方法がいくつかあるかもしれません。

于 2012-05-05T01:07:59.143 に答える