ログに記録された 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}
無駄に、前と同じエラー。