J'essaie d'obtenir une liste des événements du calendrier public d'un client à l'aide de la v3 de l'API de Google. J'ai entré l'ID du calendrier dans API Explorer , et j'obtiens un résultat positif:
https://www.googleapis.com/calendar/v3/calendars/rpsj44u6koirtq5hehkt21qs6k%40group.calendar.google.com/events?key={YOUR_API_KEY}`
=> [List of events here, as expected]
Pour créer une clé API, j'ai créé un projet dans la console développeur de Google, créé une clé d'accès API publique ( API et authentification> Informations d'identification ), et remplacé {YOUR_API_KEY}
ci-dessus avec ma clé actuelle. Je me suis assuré que l'API Calendar était activée ( API & auth> API ). Lorsque je colle cette URL dans le navigateur, j'obtiens cette réponse d'erreur:
{
"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."
}
}
Toutes les réponses que j'ai vues disent que vous devez vous assurer que l'API Google Agenda est activée, et elle l'est définitivement (également, elle est activée par défaut). Qu'est-ce que j'oublie ici?
L'utilisation de l'API Google Agenda m'a frustré pendant quelques heures, et je veux documenter une réponse trop complète (au-delà de la portée de cette question) à partir de quelques sources pour toute autre personne qui pourrait avoir des difficultés.
Tout d'abord, si vous êtes comme moi, vous avez obtenu l'adresse publique à partir des paramètres de votre calendrier:
Pour mon calendrier public, ce lien XML était this ; mais les données étaient en désordre et, je pense, représentaient une ancienne version de l'API. Après avoir cherché un peu, j'ai trouvé la structure d'URL correcte pour l'API v3: https://www.googleapis.com/calendar/v3/calendars/dl9fj86o2ohe7o823s7jar920s%40group.calendar.google.com/events?key={API_KEY}
.
Mais comme cette question, je recevais une erreur. Procédez comme suit:
1. Créer un projet
Pour ce faire, accédez à Google Developer Console et cliquez sur Create Project
. Cela m'a dérouté car mon application est entièrement front-end et je ne pensais pas avoir besoin d'un projet Google Developer. J'avais tort; J'avais besoin d'un projet pour effectuer les prochaines étapes.
2. Créez une clé API pour votre projet
Après avoir créé le projet, cliquez sur le nom du projet et accédez à APIs & auth
> Credentials
. Sous "Accès à l'API publique", cliquez sur Create new key
> {KEY_TYPE}
> Create
; dans mon cas {KEY_TYPE}
était Browser key
puisque j'ai une application entièrement front-end. Ne remplissez pas les référents pour l'instant. Cela devrait vous créer une clé API que vous insérez dans l'URL ci-dessus (où il est indiqué {API_KEY}
.
3. Ajouter des référents
Si vous êtes arrivé jusqu'ici, vous devriez voir l'erreur dont OP parlait. La raison pour laquelle vous obtenez cette erreur est que même si le calendrier est public, Google n'autorise que les demandes provenant de domaines spécifiés. Je pouvais donc publier l'ID de mon calendrier et même ma clé API, et un autre développeur ne pourrait pas accéder à mon calendrier par programme sans que je le permette.
Pour résoudre ce problème, cliquez sur Edit allowed referers
— sous APIs & auth> Credentials - et ajoutez (1) le nom du domaine qui fera la demande à l'API et (2 ) si vous développez localement http://localhost:{PORT}/*
. Assurez-vous d'ajouter le caractère générique à la fin.
4. Faire une requête HTTP à partir d'un domaine autorisé
Après toute cette configuration, vous obtiendrez toujours une erreur si vous collez simplement l'URL dans votre navigateur. En effet, la demande doit provenir de l'un des domaines que vous venez d'autoriser. Faites simplement la demande depuis l'application que vous créez. Dans mon cas, le JavaScript (jQuery) ressemble à ceci:
$.ajax({
type: 'GET',
url: {MY_URL},
success: function(data) {
// Throw a debugger statement in here,
// and you should be able to inspect your data.
}
});
Vous n'avez pas besoin de OAuth 2.0 pour accéder à un calendrier public.
J'ai eu le même problème que sea_monster décrit en premier lieu, bien que j'aie inséré une clé d'accès API publique et vérifié que l'API est activée, j'ai toujours une erreur disant:
403, AccessNotConfigured, l'API n'est pas activée ...
Solution:
Je devais aller sur la Google Developer Console, j'ai choisi mon projet, cliqué à gauche sur "APIs an Auth", puis sur "APIs" et choisi l'API Calendar. Bien qu'il soit allumé, j'ai dû désactiver l'API, j'ai attendu les messages et j'ai rallumé l'API. Maintenant mon code fonctionne et je n'ai pas eu à le changer!
J'ai rencontré le même problème et mon problème était dû au fait que j'avais des noms différents dans mon projet et API Google
Ici, le nom dans les API Google est " Exemple d'application "
Pour résoudre le problème, j'ai également changé le nom de mon projet en " Exemple d'application "
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();
}
Accédez au Gestionnaire d'API> Tableau de bord> Activer l'API Et recherchez ou sélectionnez: API du raccourcisseur d'URL, puis sélectionnez le bouton Activer.