Sto lavorando alla mia prima app in assoluto per utilizzare Google Api per Calendar. Ho letto gli esempi di Google al numero: https://developers.google.com/google-apps/calendar/instantiateErrore modulo Http di Google Api Auth
La prima volta che ho eseguito il programma di seguito ha avuto successo. Ho permesso alla mia app di accedere al mio account Google e l'applicazione ha creato un file calendar.dat con le informazioni di autorizzazione nella mia directory app. Dopo che ho rinominato il file il codice era in auth smesso di funzionare. Ho già cancellato completamente il file e l'ho ricreato da zero, ma l'errore persiste.
Ricevo ancora la pagina di autenticazione di Google e posso ancora confermare l'accesso, dopo di che ricevo un messaggio che il flusso di autenticazione è stato completato.
Questo è il codice (esempio standard di Google, che riempio con i miei dati app):
import gflags
import httplib2
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.tools import run
FLAGS = gflags.FLAGS
# Set up a Flow object to be used if we need to authenticate. This
# sample uses OAuth 2.0, and we set up the OAuth2WebServerFlow with
# the information it needs to authenticate. Note that it is called
# the Web Server Flow, but it can also handle the flow for native
# applications
# The client_id and client_secret are copied from the API Access tab on
# the Google APIs Console
FLOW = OAuth2WebServerFlow(
client_id='YOUR_CLIENT_ID',
client_secret='YOUR_CLIENT_SECRET',
scope='https://www.googleapis.com/auth/calendar',
user_agent='YOUR_APPLICATION_NAME/YOUR_APPLICATION_VERSION')
# To disable the local server feature, uncomment the following line:
# FLAGS.auth_local_webserver = False
# If the Credentials don't exist or are invalid, run through the native client
# flow. The Storage object will ensure that if successful the good
# Credentials will get written back to a file.
storage = Storage('calendar.dat')
credentials = storage.get()
if credentials is None or credentials.invalid == True:
credentials = run(FLOW, storage)
# Create an httplib2.Http object to handle our HTTP requests and authorize it
# with our good Credentials.
http = httplib2.Http()
http = credentials.authorize(http)
# Build a service object for interacting with the API. Visit
# the Google APIs Console
# to get a developerKey for your own application.
service = build(serviceName='calendar', version='v3', http=http,
developerKey='YOUR_DEVELOPER_KEY')
e questo è l'output:
Your browser has been opened to visit:
https://accounts.google.com/o/oauth2/auth? (auth url shortened)
If your browser is on a different machine then exit and re-run this
application with the command-line parameter
--noauth_local_webserver
Traceback (most recent call last):
File "C:\Users\Desktop\Google Drive\Code\Python\Rooster\calendar.py", line 2, in <module>
import httplib2
File "C:\Python27\lib\site-packages\httplib2-0.7.6-py2.7.egg\httplib2\__init__.py", line 42, in <module>
import calendar
File "C:\Users\Desktop\Google Drive\Code\Python\Rooster\calendar.py", line 33, in <module>
credentials = run(FLOW, storage)
File "C:\Python27\lib\site-packages\google_api_python_client-1.0-py2.7.egg\oauth2client\util.py", line 120, in positional_wrapper
return wrapped(*args, **kwargs)
File "C:\Python27\lib\site-packages\google_api_python_client-1.0-py2.7.egg\oauth2client\tools.py", line 169, in run
credential = flow.step2_exchange(code, http=http)
File "C:\Python27\lib\site-packages\google_api_python_client-1.0-py2.7.egg\oauth2client\util.py", line 120, in positional_wrapper
return wrapped(*args, **kwargs)
File "C:\Python27\lib\site-packages\google_api_python_client-1.0-py2.7.egg\oauth2client\client.py", line 1128, in step2_exchange
http = httplib2.Http()
AttributeError: 'module' object has no attribute 'Http'
Grazie mille, l'avevo già provato, poiché sospettavo che fosse il problema, ma non avrebbe funzionato. Sto codificando in Aptana3 e rinominato il file nel programma. Tuttavia, dopo aver letto il tuo commento e aver controllato la directory, è apparso che Aptana genera anche file python compilati, quindi c'era ancora un extra calendar.py nella directory. – Difusio
Non è Aptana ma suppongo il pitone. L'interprete Python crea le versioni compilate per impostazione predefinita. –