5

だから私は自分のアプリにグーグルプラスログインを実装しました...私の実装はここで与えられた例にかなり厳密に従っています。私と彼の最大の違いは、必要なスコープのセットが大きいことです。plusclient をビルドするときに、次のスコープを指定します。

    "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email"

後で onConnected メソッドで、実際の肉とジャガイモの作業を行うサーバーに渡すために、セッションから accesstoken を取得しようとします。

    GoogleAuthUtil.getToken(SplashActivity.this, mPlusClient.getAccountName(), "oauth2: https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email")

これにより、アクセストークンが生成されます。イッピー!右?いいえ。このトークンを使用しようとすると、アプリに関連付けられていないようです。googles tokeninfo エンドポイントを介してトークンを実行すると、次の行に沿って何かが得られます

{
 "issued_to": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com",
 "audience": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com",
 "user_id": "107245641469745809180",
 "scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email",
 "expires_in": 3577,
 "email": "redacted@email.com",
 "verified_email": true,
 "access_type": "online"
}

その issue_to 値は、クライアント ID のいずれとも一致しません。このブログ投稿の最後の部分によると、Google はこのトークン リクエストを私たちのプロジェクトと一致させることができません。ただし、私たちの API コンソールには、実際に Android の SHA フィンガープリントがあり、パッケージ名とセミコロンで区切られています。スペルミスはありません。それが伝播の問題であるかどうかを確認するために何時間も待ちました。また、SHA フィンガープリントなどを追加して、デバッグ キーストアのクライアント ID を作成しました。署名済みの apk を Eclipse からエクスポートするか、直接実行するかに関係なく、同じ問題が発生します。

これは私を狂わせています。私はこれでどこを向くべきかわかりません。

例として、に電話をかけるとき

googleapis.com/plus/v1/people/me/people/visible?access_token=TOKEN_HERE&maxResults=100&pageToken=&alt=json&orderBy=best

私は得る

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured"
   }
  ],
  "code": 403,
  "message": "Access Not Configured"
 }
}

なんらかの理由で Google がそのトークンを私のプロジェクトに関連付けなかったからです。

4

2 に答える 2

2

これまでのところ、これは Google API のバグとして出くわしています。

「 https://www.google.com/m8/feeds 」スコープを取り出すと、すべてが機能し、トークンがプロジェクトに正常に関連付けられます。「https://www.google.com/m8/feeds」が要求されたスコープとして含まれている場合、その特定の許可をユーザーに適切に求めるという事実にもかかわらず、API 側ですべてが壊れます。このスコープをリクエストするとトークンが取得されますが、トークンはプロジェクトに関連付けられていません。

于 2013-04-11T16:56:35.953 に答える
1
 String accessToken = GoogleAuthUtil.getToken(getActivity(), plusClient.getAccountName(),    
 "oauth2:" + Scopes.PLUS_LOGIN + " " + Scopes.PLUS_PROFILE + " " + MY_SCOPE);

私のコードは動作します。「oauth2:」の後に不要なラベルがある可能性があります。

于 2013-04-11T13:40:03.553 に答える