Подтвердить что ты не робот

API Google Calendar API v3 не настроен

Я пытаюсь получить список событий из общедоступного календаря клиента, используя v3 API Google. Я ввел идентификатор календаря в API Explorer, и я получаю положительный результат:

https://www.googleapis.com/calendar/v3/calendars/rpsj44u6koirtq5hehkt21qs6k%40group.calendar.google.com/events?key={YOUR_API_KEY}`

=> [List of events here, as expected]

Чтобы создать ключ API, я создал проект в консоли разработчика Google, создал ключ доступа к публичному API (API и auth > Credentials) и заменил {YOUR_API_KEY} выше моим фактическим ключом, Я убедился, что API календаря включен (API API и auth > ). Когда я вставляю этот URL-адрес в браузере, я получаю этот ответ:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured. The API is not enabled for your project, or there is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your configuration.",
    "extendedHelp": "https://console.developers.google.com"
   }
  ],
  "code": 403,
  "message": "Access Not Configured. The API is not enabled for your project, or there is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your configuration."
 }
}

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

4b9b3361

Ответ 1

Использование Google Calendar API расстроило меня в течение нескольких часов, и я хочу документировать слишком полный (вне сферы действия этого вопроса) ответ из нескольких источников для всех, кто может испытывать трудности.

Во-первых, если вы похожи на меня, вы получили общедоступный адрес из настроек календаря: enter image description here

Для моего общедоступного календаря эта XML-ссылка была this; но данные были грязными и, я думаю, представляли более старую версию API. После поиска немного, я нашел правильную структуру URL для API v3: https://www.googleapis.com/calendar/v3/calendars/dl9fj86o2ohe7o823s7jar920s%40group.calendar.google.com/events?key={API_KEY}.

Но, как этот вопрос, я получал сообщение об ошибке. Выполните следующие действия:

1. Создать проект

Сделайте это, перейдя в Консоль разработчика Google и нажав Create Project. Я был смущен этим, потому что мое приложение полностью интерфейсное, и я не думал, что мне нужен проект Google Developer. Я был неправ; Мне нужен был проект для выполнения следующих шагов.

2. Создайте ключ API для вашего проекта

После создания проекта щелкните название проекта и перейдите к APIs & auth > Credentials. В разделе "Открытый доступ к API" нажмите Create new key > {KEY_TYPE} > Create; в моем случае {KEY_TYPE} был Browser key, поскольку у меня есть полностью внешнее приложение. Пропустить заполнение в реферерах пока. Это должно создать ключ API, который вы вставляете в указанный выше URL (где он говорит {API_KEY}.

3. Добавление ссылок

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

Чтобы решить эту проблему, нажмите Edit allowed referers -under API и авторизуйтесь > Учетные данные - и добавьте (1) имя домена, которое будет отправлять запрос API, и (2) if вы разрабатываете локально http://localhost:{PORT}/*. Убедитесь, что вы добавили подстановочный знак в конце.

4. Сделайте запрос HTTP из разрешенного домена

После всей этой конфигурации вы все равно получите сообщение об ошибке, если просто вставьте URL-адрес в свой браузер. Это связано с тем, что запрос должен поступать из одного из доменов, которые вы только что допустили. Просто сделайте запрос от любого приложения, которое вы строите. В моем случае JavaScript (jQuery) выглядит так:

$.ajax({
    type: 'GET',
    url: {MY_URL},
    success: function(data) {
        // Throw a debugger statement in here,
        // and you should be able to inspect your data.
    }
});

Ответ 2

Вам не нужен OAuth 2.0 для доступа к общедоступному календарю.

У меня была такая же проблема, как и в описании sea_monster, хотя я вставлял открытый ключ доступа к API и проверял, что API включен, у меня всегда была ошибка:

403, AccessNotConfigured, API не включен...

Решение

Мне нужно было пойти в Консоль разработчика Google, выбрать мой проект, щелкнуть слева на "APIs Auth", затем на "API" и выбрать API календаря. Хотя он был включен, мне пришлось отключить API, дождаться сообщений и снова включить API. Теперь мой код работает, и мне не нужно его менять!

Ответ 3

Я столкнулся с той же проблемой, и моя проблема состояла в том, что у меня были разные имена в проекте и API Google

введите описание изображения здесь

Здесь в API Google используется название " Пример приложения"

Чтобы решить проблему, я изменил имя в моем проекте на " Пример приложения" тоже

        public MakeRequestTask(GoogleAccountCredential credential) {
            HttpTransport transport = AndroidHttp.newCompatibleTransport();
            JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
            mService = new com.google.api.services.calendar.Calendar.Builder(
                    transport, jsonFactory, credential)
                    .setApplicationName("App Example")
                    .build();
        }

Ответ 4

Перейдите в Диспетчер API > Панель управления > Включить API Ищите или выберите: URL Shortener API Затем нажмите кнопку "Включить".

Ответ 5

Когда вы протестировали вызов в API-интерфейсе API, вам также пришлось активировать опцию "Авторизовать запросы с использованием OAuth 2.0", а затем разрешить запрашиваемые разрешения. В этом случае пользователь (даже если он сам) должен разрешить доступ к информации.

Чтобы приложение обращалось к пользовательской информации, необходимо пройти процесс аутентификации с использованием OAuth 2.0. здесь вы можете найти документацию: https://developers.google.com/accounts/docs/OAuth2

Вы также можете использовать OAuth Playground (https://developers.google.com/oauthplayground/) для вызова API (как в API-интерфейсе API), но в этом случае шаги, необходимые для авторизации, в проводнике API эти шаги выполняются автоматически при включении кнопки "Авторизовать запросы с использованием OAuth 2.0".

Надеемся, что эта информация полезна.