Как позвонить https://www.googleapis.com/plus/v1/people/me в Google - PullRequest
8 голосов
/ 24 января 2012

Я занимаюсь разработкой приложения для Android и мне нужно получить информацию о себе от Google, но я всегда получаю код ответа 401 или 403. Что я делаю не так?Вот мой код:

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

Я получаю токен oauth (примечание ... приведенный ниже код сокращен):

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);

Пока все хорошо ... У меня теперь естьтокен, так что все выглядит хорошо здесь.

Теперь получите мне информацию:

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);

Это дает код ответа 401.

Я также пытался:

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

Это дает код ответа 403. - Что-то вроде «Превышен дневной лимит. Пожалуйста, зарегистрируйтесь».

Что я делаю не так?что я пропустил?Как это сделать?

Спасибо

// Правки ниже Еще одно исследование: я добавил проект в code.google.com/apis/console, взял сгенерированный оттуда ключ и вставилв URL, например: https://www.googleapis.com/plus/v1/people/me?key=my_generated_key&access_token=" + authToken.Теперь звонок работает нормально, и я получаю ответ 200 с правильной информацией.Но я действительно не хочу использовать этот метод, если мне не нужно, и в соответствии с Google мне не нужно "• Если запрос требует авторизации (например, запрос личных данных человека), то он должен включатьтокен OAuth 2.0. Он также может включать ключ API, но это не обязательно ».- от developers.google.com/+/api/oauth.

Другое дело: если я попробую другой URL-адрес, например "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=" + authToken, он будет работать нормально.

Ответы [ 6 ]

13 голосов
/ 11 мая 2012

Проблема связана с простым ключом API, переданным в запрос.

Если ключевой параметр не включен в запрос или если API Google+ не был активирован для этого проекта, вы получите сообщение об ошибке: «Превышен дневной лимит. Пожалуйста, зарегистрируйтесь».

Чтобы решить эту проблему, вам необходимо сделать следующее:

  • Посетите консоль Google API здесь: https://code.google.com/apis/console/?api=plus
  • На панели «Службы» убедитесь, что API Google+ включен.
  • В консоли API нажмите Доступ к API в левом меню.
  • Скопируйте ключ API, представленный внизу.
  • Включите этот ключ API в ваш HTTP-запрос.
GOOGLE_ME_URL + "?access_token=" + authToken + "&key=" + MY_SIMPLE_API_KEY
3 голосов
/ 11 мая 2012

Большинство новых API Google имеют квоты (например, суточные лимиты использования), а некоторые даже имеют поддержку биллинга (когда вы платите за вызов API). Эти квоты и счета рассчитываются для каждого проекта разработчика, а не для каждого конечного пользователя, поэтому Google необходимо знать, какое приложение назначит использование вашего API.

Клиентам API, использующим OAuth 2.0 от Google, обычно требуется регистрация и получение идентификатора клиента и его секрета.

Этот идентификатор клиента и секрет клиента возвращаются консолью API Google: code.google.com/apis/console.

Затем вы используете эти значения в своем приложении, и это идентифицирует ваше приложение и позволяет Google назначить использование вашего API вашей учетной записи / проекту разработчика.

В используемом интерфейсе AccountManger ваше приложение не передает идентификатор клиента, поэтому Google не может определить, какую квоту аккаунта разработчика / проекта вычитать для использования. Он также не знает, что API был правильно включен (принят TOS и т. Д.) Вами как разработчиком. Вот почему он просит вас «пожалуйста зарегистрироваться» и говорит «Превышен дневной лимит» (поскольку незарегистрированный лимит равен нулю запросов для многих API).

В этом случае вам необходимо передать значение «ключа», как вы это делали, чтобы получить доступ к API с токенами OAuth 2.0, полученными из AccountManager.

1 голос
/ 22 марта 2012

Почему некоторые из вас не пытаются перейти на консоль Google. Таким образом, вы сможете получить доступ к инструментам, которые вам нужны для исправления не менее 403 forbidden problems. DMC

0 голосов
/ 20 октября 2017

У меня та же проблема, что вам нужно просто включить google + api в консоли.

0 голосов
/ 25 января 2012

Создайте новый токен аутентификации и секрет для вашего приложения и попробуйте снова.

Это может решить вашу проблему, но ваш дневной лимит повторений может быть исчерпан ...

У меня было то же самоепроблема у вас.

0 голосов
/ 24 января 2012

В данный момент вы используете http, но на самом деле вы вызываете сайт через https. Либо используйте процедуру безопасного подключения, либо используйте адрес http: //.

(Извините, я пока не могу это сделать)

...