2

Ich habe ein Dienstkonto für mein Google Kalender-API-Projekt eingerichtet. Die Idee ist, dass meine Website zu meinen Google-Kalender und Anzeige Ereignisse verbinden kann, usw. Wie es von GoogleHttpAccessTokenRefreshError at ... unauthorized_client: Der Client ist nicht berechtigt, Zugriffstokens mit dieser Methode abzurufen

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

die in der Tat geschehen ist, und so habe ich ein Verbindungs ​​OAuth 2.0 client ID gesetzt wurde. So weit, ist es gut. Ich erzeugte eine json-Datei, die ich verwendet, um eine Verbindung und versuchen Sie es mit diesen Code zur Authentifizierung

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 

Aber leider

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.  

ich den Google Kalender api aktiviert haben. Tatsächlich habe ich das Gefühl, als wäre ich allen Schritten gefolgt. Tatsächlich habe ich das schon einmal mit vollem Erfolg getan, aber jetzt bin ich perplex. Ich lese, dass ich vielleicht 24-48 Stunden warten muss, bevor das alles in Kraft tritt. Könnte es so einfach sein?

Für jetzt, ich teste das nur lokal. Bisher wurde noch nichts auf den Server übertragen.

Antwort

0

prüfen Link aus: Google API Python unauthorized_client: Unauthorized client or scope in request

Sie müssen die Client-ID von Ihrem "Developer Console", wie der Client-Name in der "Manage API Client Access" verwenden, wenn Sie Ihre API-Bereiche einstellen.

+0

Ich habe das gesehen, aber ich versuche nur, mich mit der 'json'-Datei, die automatisch für mich generiert wurde, zusammen mit dem Client-Schlüssel zu verbinden. –

Verwandte Themen