2

J'ai configuré un compte de service pour mon projet google calendar api. L'idée est que mon site web peut se connecter à mes événements de calendrier et d'affichage google, etc. Comme il a été mis par googleHttpAccessTokenRefreshError à ... unauthorized_client: le client n'est pas autorisé à récupérer les jetons d'accès à l'aide de cette méthode.

Service account clients are created when domain-wide delegation is 
enabled on a service account. 

Ce qui est arrivé en effet et j'ai donc une connexion OAuth 2.0 client ID. Jusqu'ici tout va bien. Je généré un fichier json que j'ai utilisé pour connecter et essayer d'authentifier en utilisant ce code

from cal.models import Cal as Caldb 
import httplib2 

from apiclient.discovery import build 
from oauth2client.file import Storage 
from oauth2client.client import OAuth2WebServerFlow 
from oauth2client import tools 

from calendar import monthrange 
from calendar_gui import MyCalendar 
from datetime import datetime 
from datetime import date 
from django.utils.safestring import mark_safe 

from oauth2client.service_account import ServiceAccountCredentials 
import os 
from django.conf import settings 

def authenticate(): 
    scope= ['https://www.googleapis.com/auth/calendar'] 
    credentials = ServiceAccountCredentials.from_json_keyfile_name(os.path.join(settings.PROJECT_ROOT, '../', 'myjson.json'), scopes=scope) 
    delegated_credentials = credentials.create_delegated('[email protected]') 

    http = httplib2.Http() 
    http = delegated_credentials.authorize(http) 
    service = build(serviceName='calendar', version='v3', http=http, credentials=credentials) 

    return service 

Mais hélas

service = build(serviceName='calendar', version='v3', http=http, credentials=credentials) 
File "/usr/local/lib/python2.7/dist-packages/oauth2client/util.py", line 137, in positional_wrapper 
return wrapped(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/discovery.py", line 214, in build 
cache) 
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/discovery.py", line 261, in _retrieve_discovery_doc 
resp, content = http.request(actual_url) 
File "/usr/local/lib/python2.7/dist-packages/oauth2client/transport.py", line 153, in new_request 
credentials._refresh(orig_request_method) 
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 765, in _refresh 
self._do_refresh_request(http_request) 
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 834, in _do_refresh_request 
    raise HttpAccessTokenRefreshError(error_msg, status=resp.status) 
HttpAccessTokenRefreshError: unauthorized_client: Client is unauthorized to retrieve access tokens using this method.  

J'ai activé le calendrier google api. En fait, j'ai l'impression d'avoir suivi toutes les étapes. En fait, je l'ai fait une fois auparavant avec un succès complet, mais je suis perplexe maintenant. J'ai lu que peut-être je dois attendre 24-48 heures avant que tout cela prenne effet. Pourrait-il être aussi simple que cela?

Pour le moment, je ne fais que tester cela localement. Rien n'a encore été poussé vers le serveur.

Répondre

0

Vérifiez ce lien sur: Google API Python unauthorized_client: Unauthorized client or scope in request

Vous devez utiliser l'ID client de votre « Developer Console », comme le nom du client dans la « Gestion de l'accès client API » lors de la définition de vos champs d'application de l'API.

+0

J'ai vu cela, mais j'essaie simplement de me connecter avec le fichier 'json' qui a été généré automatiquement pour moi, avec la clé du client. –