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 включен, и это определенно (также, по умолчанию оно включено). Что мне здесь не хватает?
Ответы
Ответ 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".
Надеемся, что эта информация полезна.