2

ログに記録された Google アカウントから個人情報 (具体的には、完全な名前、プロフィール写真、カバー写真) を取得する必要があるアプリを作成しています。Google+ サインインを実装せずにこれを実行しようとしていますが、これはやり過ぎだと思います。私の特定のケースでは。

これは、認証に使用している GoogleAccountCredential オブジェクトです

    credential = GoogleAccountCredential.usingOAuth2(
            getApplicationContext(), Arrays.asList(SCOPES))
            .setBackOff(new ExponentialBackOff())
            .setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));

一方SCOPESは

private static final String[] SCOPES = {CalendarScopes.CALENDAR_READONLY, CalendarScopes.CALENDAR, "profile", "email", "https://www.googleapis.com/auth/plus.login" }; 

今、アプリケーションを起動すると、要求された情報を使用するための許可が正しく求められます。

https://www.dropbox.com/s/e11y0gnnemfgu02/Screenshot_2015-08-11-19-41-08~01.png?dl=0

必要なデータを取得する場合は、AsyncTask を実行して、次の GET 要求を行います。

CloseableHttpResponse response = httpClient.execute(new HttpGetHC4("https://www.googleapis.com/plus/v1/people/me"));



        BufferedReader rd = new BufferedReader(
                new InputStreamReader(response.getEntity().getContent()));

        StringBuffer result = new StringBuffer();
        String line = "";
        while ((line = rd.readLine()) != null) {
            result.append(line);
        }

        Log.d("ProfileTask", result.toString() );

そして、私はこれを応答として取得します

{ "error": 
{  "errors": 
[   {    "domain": "usageLimits",    
          "reason": "dailyLimitExceededUnreg",    
          "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",    
          "extendedHelp": "https://code.google.com/apis/console"   }  ],            
          "code": 403,  
          "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." }}

今:

  • アプリケーションのSHA1フィンガープリントに関連付けられたOAuthクレデンシャルを使用して、Google Developer ConsoleでGoogle + APIを有効にしました(実際に有効にして無効にして、違いがあるかどうかを確認しました:違いはありません)
  • Calendar API も有効にしましたが、そのリクエストからエラーは発生しません
  • など、作成したパブリック API キーを使用して GET リクエストを作成することも試みました。

    GET https://www.googleapis.com/plus/v1/people/me?key={MY_API_KEY} 
    

    同じ結果が得られるか、「ipRefererBlocked API キーに構成された IP またはリファラーごとの制限があり、リクエストがこれらの制限と一致しない」というエラーが発生することさえあります。Google 開発者コンソールを使用して更新してくださいこの IP またはリファラーからのリクエストを許可する必要がある場合は、API キーの構成。」

私は何を間違っていますか?これらの API の機能を誤解していませんか? Google+ で署名せずにこれらのデータを取得するにはどうすればよいですか?

どうもありがとうございました。

編集: http 要求で credentials.getToken() から取得した accessToken を使用してアクセスしようとしました:

 GET https://www.googleapis.com/plus/v1/people/me?accesstoken={ACCESS_TOKEN}

無駄に、前と同じエラー。

4

0 に答える 0