Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to call https://www.googleapis.com/plus/v1/people/me at google

I am developing an Android application and need to get the "me" info from google but I always ends up in either response code 401 or 403. What am I doing wrong? Here is my code:

private static final String GOOGLE_AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/plus.me";

I get the oauth token by (note...code below is shortened):

Account googleAccount = (AccountManager) getSystemService(ACCOUNT_SERVICE).getAccountsByType("com.google")[0];
final Bundle bundle = manager.getAuthToken(googleAccount, GOOGLE_AUTH_TOKEN_TYPE, true, null, null).getResult();
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);

So far so good... I now have a token so everything looks good here.

Now get the me info:

String GOOGLE_ME_URL = "https://www.googleapis.com/plus/v1/people/me";
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL);
request.addHeader("Authorization", "OAuth=" + authToken);
final HttpResponse response = client.execute(request);

This gives response code 401.

I have also tried:

final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL + "?access_token=" + authToken);
final HttpResponse response = client.execute(request);

This gives response code 403 - Something like "Daily limit exceeded. Please sign up".

What am I doing wrong? what have I missed? How should this be done?

Thanks

// Edits below Some more investigation: I added a project into code.google.com/apis/console and took the key generated from there and put into the url, like: https://www.googleapis.com/plus/v1/people/me?key=my_generated_key&access_token=" + authToken. Now the call works fine and I get a 200 response with the correct info. But I really don´t want to use this method if I don´t have to and according to google I should not need to "•If the request requires authorization (such as a request for an individual's private data), then it must include an OAuth 2.0 token. It may also include the API key, but it doesn't have to." - from developers.google.com/+/api/oauth.

Another thing: If I try another url like "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=" + authToken it works fine.

like image 908
user1140596 Avatar asked Jan 24 '12 15:01

user1140596


1 Answers

The issue is regarding the simple api key passed into the request.

If the key parameter isn't included in the request, or if the Google+ API wasn't activated for that project, you'll get the error: "Daily limit exceeded. Please sign up".

To solve this problem, you need to do the following:

  • Visit the Google API Console here: https://code.google.com/apis/console/?api=plus
  • Under the Services panel, make sure the Google+ API is turned "on".
  • In the APIs console, click API Access in the left menu.
  • Copy the API key presented towards the bottom.
  • Include this API key in your HTTP request.
GOOGLE_ME_URL + "?access_token=" + authToken + "&key=" + MY_SIMPLE_API_KEY
like image 93
Chirag Shah Avatar answered Sep 23 '22 17:09

Chirag Shah