Sto cercando di creare file in una cartella Dropbox.com da un'applicazione GAE. Ho eseguito tutti i passaggi per registrare un'applicazione Dropbox e installato l'SDK Python da Dropbox localmente sul mio computer di sviluppo. (vedi API dropbox.com). Tutto funziona perfettamente quando uso lo script di test cli_client.py nel SDK set sulla mia macchina locale per accedere set - file can 'put' eccScrittura di file sull'account Dropbox da GAE
ora voglio iniziare a lavorare in un ambiente GAE, così le cose si fanno un po 'complicato. Qualche aiuto sarebbe utile.
Per chi ha familiarità con il codice API di Dropbox, ho avuto i seguenti problemi così lontane:
Issue 1
Il modulo API Dropbox rest.py utilizza pkg_resources per ottenere il certs installate nel sito- pacchetti di un'installazione locale della macchina. Ho sostituito
TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')
con
TRUSTED_CERT_FILE = file('trusted-certs.crt')
e messo il file cert nella mia directory dell'applicazione GAE. Forse questo non è giusto; vedi il mio codice di errore di autenticazione qui sotto.
Issue 2
Il modulo API Dropbox session.py utilizza oauth modulo, così ho cambiato l'inclusione di AppEngine oauth.
Tuttavia, ha sollevato un'eccezione che l'oauth di GAE non ha il metodo OAuthConsumer utilizzato dal modulo session.py di Dropbox. Quindi ho scaricato oauth 1.0 e aggiunto alla mia applicazione e ora importa questo invece di GAE oauth.
Issue 3
modulo SSL GAE non sembra avere proprietà CERT_REQUIRED.
Questa è una costante, così ho cambiato
self.cert_reqs = ssl.CERT_REQUIRED
a
self.cert_reqs = 2
Questo è usato quando si chiama
ssl.wrap_socket(sock, cert_reqs=self.cert_reqs, ca_certs=self.ca_certs)
autenticazione Errore
Ma ancora non è possibile connettersi a Dropbox:
Status: 401
Reason: Unauthorized
Body: {"error": "Authentication failed"}
Headers: [('date', 'Sun, 19 Feb 2012 15:11:12 GMT'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('content-type', 'application/json'), ('server', 'dbws')]
spero che qualcuno risponde a questa. Nel frattempo, mentre non sono sicuro di cosa sia pkg_resources.resource_filename(), penso che restituisca un nome file, non un file aperto, mentre file() apre il file con nome e restituisce un oggetto stream (file aperto). Potresti voler provare 'TRUSTED_CERT_FILE = 'trusted-certs.crt''. –
Grazie Guido - proverò che – erickCo
Guido, sei corretto, il tipo restituito da 'pkg_resources.resource_filename()' è 'str'. Il valore è il percorso completo del file certs. Così ho fatto il cambiamento come suggerisci tu. Ahimè, ancora lo stesso errore. – erickCo