Как использовать API Google+ без взаимодействия с клиентом

Я пытаюсь выполнить некоторые запросы только для чтения к API Google+ - в основном для чтения некоторых действий. Это серверное приложение — без браузера и взаимодействия с клиентом.

Я ознакомился с различными типами аутентификации, поддерживаемыми API Google, и я относительно уверен, что мой вариант использования соответствует Сервисный аккаунт сценарий – поэтому я рассматривал этот пример: plus-serviceaccount-cmdline-sample.

Теперь я создал новое приложение (в консоли API Google), создал учетные данные служебной учетной записи и в целом следовал инструкциям примера. Однако я получаю:

400 Bad Request
{
  "error" : "invalid_grant"
}

Не уверен, что я делаю неправильно - любая помощь приветствуется. Спасибо.


person Eugen    schedule 09.06.2013    source источник


Ответы (1)


Самый распространенный способ получить ошибку «invalid_grant» с образцом учетной записи службы — забыть вставить зарегистрированный адрес электронной почты в свой код.

Перейдите на страницу https://developers.google.com/console, затем в API Access и посмотрите, где вы зарегистрировались. ваш сервисный аккаунт.

Вы должны увидеть поле, помеченное как

Email address: XXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXX@developer.gserviceaccount.com

Вам нужно скопировать это значение и вставить его в

plus-serviceaccount-cmdline-sample/src/main/java/com/google/api/services/samples/plus/serviceaccount/cmdline/PlusServiceAccountSample.java

В строке следующим образом:

/** E-mail address of the service account. */
private static final String SERVICE_ACCOUNT_EMAIL = "Enter service account e-mail from "
    + "https://code.google.com/apis/console/?api=plus into SERVICE_ACCOUNT_EMAIL in "
    + PlusServiceAccountSample.class;

Чтобы это выглядело так:

/** E-mail address of the service account. */
private static final String SERVICE_ACCOUNT_EMAIL = "XXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXX@developer.gserviceaccount.com";

Это, а также загрузка ключа .p12 в проект имеют решающее значение для аутентификации приложения.

person Nick    schedule 11.06.2013
comment
Спасибо за помощь - помогло. Вместо этого я использовал свой основной адрес электронной почты. - person Eugen; 20.06.2013