2014-06-29 10 views
6

Ich folge dem Beispiel in https://developers.google.com/storage/docs/gspythonlibrary#credentialskann nicht mit GCS in Python

ich erstellt Client/secret Paar, indem Sie in der Entwickler authentifizieren. Konsole "create new client id", "installierte Anwendung", "other".

Ich habe den folgenden Code in meinem Python-Skript:

import boto 
from gcs_oauth2_boto_plugin.oauth2_helper import SetFallbackClientIdAndSecret 
CLIENT_ID = 'my_client_id' 
CLIENT_SECRET = 'xxxfoo' 
SetFallbackClientIdAndSecret(CLIENT_ID, CLIENT_SECRET) 

uri = boto.storage_uri('foobartest2014', 'gs') 
header_values = {"x-goog-project-id": proj_id} 
uri.create_bucket(headers=header_values) 

und es schlägt mit dem folgenden Fehler:

File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 555, in create_bucket 
     conn = self.connect() 
    File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 140, in connect 
     **connection_args) 
    File "/usr/local/lib/python2.7/dist-packages/boto/gs/connection.py", line 47, in __init__ 
     suppress_consec_slashes=suppress_consec_slashes) 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 190, in __init__ 
     validate_certs=validate_certs, profile_name=profile_name) 
    File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 572, in __init__ 
     host, config, self.provider, self._required_auth_capability()) 
    File "/usr/local/lib/python2.7/dist-packages/boto/auth.py", line 883, in get_auth_handler 
     'Check your credentials' % (len(names), str(names))) 
    boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 3 handlers were checked. ['OAuth2Auth', 'OAuth2ServiceAccountAuth', 'HmacAuthV1Handler'] Check your credentials 
+0

Sie gcloud-Python (https://github.com/GoogleCloudPlatform/gcloud-python) Haben Sie daran gedacht zu versuchen? Könnte einfacher sein als mit Boto –

Antwort

2

Sie benötigen ein Client/secret Paar in einer .boto Datei zur Verfügung zu stellen, und führen Sie dann .

Es wird ein Refresh-Token erstellen, und dann sollte es funktionieren!

Weitere Informationen finden Sie https://developers.google.com/storage/docs/gspythonlibrary#credentials

+1

Warum müssen wir die client_id und client_secret in * sowohl * .boto-Datei und den Quellcode angeben? – frmsaul

+0

Siehe @ Griffin2000 Antwort, Boto ist veraltet und wird Sie nirgends mit Google bekommen. – brma

3

Ich habe mit diesem für die letzten paar Tage zu kämpfen, macht die boto Sachen aus, und das gspythonlibrary sind alle total veraltet.

Jüngstes Beispiel-Code zeigt, wie/ist hier Google Cloud Storage verwenden authentifizieren: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/storage/api

+0

Warum denkst du, dass es veraltet ist? Es erscheint immer noch hier: https://cloud.google.com/storage/docs/xml-api/gspythonlibrary – Roman

+1

Ja, dass doc viel veraltet ist. Wenn Sie versuchen, diese Anweisungen mit einer aktuellen Version von gcloud zu befolgen, wird dies vollständig fehlschlagen. Das gesamte Boto-System, das dort beschrieben wird, wird länger unterstützt (oder zumindest stark davon abgeraten). – griffin2000

+0

Dank @ griffin2000 habe ich Stunden damit zugebracht, ihre Dokumente zu lesen und Support-Tickets zu öffnen, bis ich deinen Kommentar gefunden habe. Ich laufe 2 Minuten später ... Ich kann nicht glauben, dass sie immer noch BAD/WRONG-Dokumente hosten. Keine Dokumente sind besser als falsche Dokumente. – brma