Получение Publi c выходной до json из API календаря Google - PullRequest
1 голос
/ 18 марта 2020

Я пытаюсь получить данные API календаря Google на JSON, используя reactjs хуки следующим образом

const [data, setData] = useState({ hits: [] });

useEffect(() => {
    getEvents();
}, []);


const getEvents = async () => {
    const result = await axios(
        'https://www.googleapis.com/calendar/v3/calendars/en.usa#holiday@group.v.calendar.google.com/events?key=MYKEEEY',
      );
      setData(result.data);
      console.log(data);
}

Когда я запускаю свое приложение, я получаю следующую ошибку

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

Я выполнил все инструкции по созданию приложения, сгенерировал необходимые учетные данные.

Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Вы не можете получить доступ к календарям праздников Google только с помощью ключа API, см. здесь и здесь

Вместо этого вам необходимо получить Client ID ( например, нажав кнопку Включить Google Calendar API и затем запишите идентификатор клиента), и вам необходимо использовать этот идентификатор клиента для создания учетных данных / потока авторизации.

Процесс немного отличается в каждом языке, и я не сделал это в Reactjs. Но есть торариалы, объясняющие, как выполнить авторизацию для API Календаря в Reactjs, например в этом .

0 голосов
/ 18 марта 2020

Документы Google предоставляют несколько советов, чтобы исправить это. https://developers.google.com/calendar/v3/errors#401_invalid_credentials

401: Invalid Credentials
Invalid authorization header. The access token you're using is either expired or invalid.

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization",
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

Suggested actions:

Get a new access token using the long-lived refresh token.
If this fails, direct the user through the OAuth flow, as described in Authorizing requests with OAuth 2.0.
If you are seeing this for a service account, check that you have successfully completed all the steps in the service account page.

В указанном вами сообщении об ошибке c указано «Требуется вход в систему», поэтому, возможно, ваша проблема связана с потоком OAuth. Однако я вижу, что вы говорите:

Я выполнил все инструкции, создал приложение, сгенерировал необходимые учетные данные.

Если это так, похоже, вы могли бы нужен новый токен доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...