4

古い Google Plus (別名 Google Play Service) API をアプリに統合していますが、今は V2 API を使用するように更新しようとしています。これには、とりわけ、ユーザーのサークル内のユーザーのリストへのアクセスが含まれます。

表向きは、認証に使用している OAuth プロファイルを更新する必要がある唯一の変更は次のとおりです。

    _plusClient = new PlusClient.Builder(_activity, this, this).
        setScopes(Scopes.PLUS_LOGIN).build();

次に、(物事が接続されていることを確認するために必要なフープジャンプを行った後)、ユーザーの友達にリクエストを行います:

        _plusClient.loadPeople(new PlusClient.OnPeopleLoadedListener() {
            public void onPeopleLoaded (ConnectionResult status, PersonBuffer people,
                                        String nextPageToken) {
                // ...
            }
        }, com.google.android.gms.plus.model.people.Person.Collection.VISIBLE);

ただし、これConnectionResult.NETWORK_ERRORは報告されることになります。Android ログで次のことを確認できます。

 E/Volley  (13590): [4053] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/plus/v1/people/me/people/visible?maxResults=100&orderBy=alphabetical

私の古いコードは、PlusClient を使用して (経由で) OAuth 自動トークンを取得した後、手動で REST 要求を作成しましたGoogleAuthUtil.getToken。したがって、ユーザーの基本的なプロファイル情報を取得するために、次のような HTTP 要求を発行することになりました。

https://www.googleapis.com/oauth2/v1/userinfo?auth_token=XXX

これは非常にうまく機能し、V2 コードでuserinfoも引き続き機能します。userinfoただし、次のようなリクエストを使用して、REST API を介してユーザーの可視人物を手動で取得しようとすると、次のようになります。

https://www.googleapis.com/plus/v1/people/me/people/visible?auth_token=XXX

次の JSON BLOB で 403 応答を受け取ります。

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

ドキュメントから収集できることから、Google Play Services コードを介して Google Plus を Android アプリに統合するために、Google API キーを取得して構成する必要はありません。実際、API にはそのようなキーを提供する場所がなく、この疑惑を裏付けています。

GCM 用の Android アプリに Google API キーが接続されています。その API キーが何らかの理由でこれらすべてに混同されている可能性があるため、その API キーに対して Google+ が有効になっていることを確認しましたが、403 応答が魔法のように消えることはありませんでした。

Google+https://www.googleapis.com/plus/v1/people/me/people/visibleの REST API ドキュメントに埋め込まれた API エクスプローラーを介してリクエストをテストしましたが、そこで動作します。JSON の結果でサークル内のユーザーを確認できます。

これらのリクエストには、URL に API キーが平手打ちされているように見えることに気付きました。

https://www.googleapis.com/plus/v1/people/me/people/visible?key=AIzaSyCFj15TpkchL4OUhLD1Q2zgxQnMb7v3XaM

そこで、Android アプリ用の API キーを作成して (GCM に使用しているのと同じ Google API プロジェクトを使用して)、友人リストを手動で読み込もうとするコードの URL にそれを追加してみました。このリクエストは、認証情報が正しくないことを示す 401 エラーで失敗します。Google Plus SDKコードから返される認証トークンは、別の「APIプロジェクト」(おそらくAndroid Google Plusアプリで使用されるものなど)を介して取得され、独自のキーを渡すと、すべてが不安定になると思います.

私はこれまでのところ、Google Play Services Google+ SDK の使用をすべて排除し、OAuth アクセス トークンを自分で取得しようとはしていません。私はむしろ、これが機能し、調査に多くの時間を無駄にする必要がないことを望んでいました. おそらく宇宙の誰かが、この Google+ を動かしたか、役に立つ方向性を教えてくれるかもしれません。

4

2 に答える 2

8

デジタル署名された.apkファイルの公開証明書をGoogleAPIコンソールに登録しましたか?そうでない場合は、ここでそれを行う方法の説明を見つけることができます。

于 2013-03-05T02:45:51.660 に答える
0

google+ API アクセスを追加したことを確認してください。SHA1 で作成されたクライアント キーと、Android マニフェスト ファイル内の完全なプロジェクト パッケージ

于 2015-04-29T00:24:29.140 に答える