web-dev-qa-db-fra.com

Pourquoi l'API Google Calendar (oauth2) répond-elle par "Permission insuffisante"?

Je fais une requête get à l'URL suivante ({id} étant remplacé par l'id de l'interface Web):

https://www.googleapis.com/calendar/v3/calendars/{id}

Quelques affirmations:

  1. L'en-tête Autoriser est correctement défini avec un jeton d'accès valide (le jeton fonctionne correctement pour l'API Analytics)

  2. J'ai défini la portée suivante pour oauth2, qui s'affiche correctement: 

    https://www.googleapis.com/auth/calendar
    
  3. Le jeton ne semble pas avoir expiré; cela fonctionne pour l'API Analytics.

    { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } }
    
26
rob_mccann

Pour résoudre ce problème, j'ai révoqué l'accès à l'application à l'adresse https://accounts.google.com/IssuedAuthSubTokens et j'ai réessayé, après quoi j'ai pu accéder correctement à l'API. 

Malgré la portée de la liste et la portée apparaissant sur la page de subvention OAuth2 de Google, la portée supplémentaire n'a pas été accordée.

21
rob_mccann

Je vérifierais que la portée est incluse - j'ai vu ce message exact quand j'ai demandé la mauvaise portée. Visiter https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxx est un bon moyen de vérifier.

En supposant que cela soit vérifié, assurez-vous que l'utilisateur pour lequel vous avez le jeton d'accès est autorisé à afficher le calendrier auquel vous essayez d'accéder. Icône "Engrenages" -> "Paramètres" -> "Calendriers" -> (sélection du calendrier) -> "Partager ce calendrier"

6
aeijdenberg

Ajouter une portée pour calendar visiter l'API du calendrier et vérifier la configuration de l'accès

https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.readonly
6
Filsh

Je devais inclure la portée de Google Plus pour disposer des autorisations suffisantes pour accéder à un calendrier:

Donc, ma scope a fini par ressembler à ceci:

'https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/plus.login'

2
Dylan Pierce

J'ai dû supprimer des autorisations sur mon application, puis revenir pour donner des autorisations dans https://security.google.com/settings/security/permissions

0
NoE

Je suis également confronté au même problème lors de l'ajout ou de la modification d'un événement. Et après quelques recherches sur Google, j’ai trouvé qu’une portée vous donnerait toute la permission - 

https://www.googleapis.com/auth/calendar
0
Mahfuzur Rahman

J'ai eu le même problème pendant que j'essayais d'ajouter un événement dans mon agenda Google. Comment j'ai finalement résolu ça:

  • supprimer mon fichier 'credentials.json'
  • lancez un programme Python qui ressemble au programme de démarrage rapide de Google et écrit "SCOPES = ' https://www.googleapis.com/auth/calendar '". Ce programme était la seule solution qui a fonctionné pour moi. Lancer ma commande Django pour appeler mon vrai travail ne fonctionnait pas pour moi. Mais cela a résolu mon problème de permission.

Ensuite, il ouvre votre navigateur et Google demande votre autorisation pour gérer votre calendrier et créer un nouveau "credentials.json" dans votre répertoire. 

0
Thomas Simmer