2013-04-14 14 views
6

Próbuję zacząć korzystać z API Pythona dla Google Compute Engine przy użyciu ich "Hello World" tutorial https://developers.google.com/compute/docs/api/python_guide#setupGCE Python API: oauth2client.util: execute() wykonuje co najwyżej 1 pozycyjną argument (2 podano)

Ilekroć wykonywanie połączenia response = request.execute(auth_http) choć, otrzymuję następujący błąd sygnalizacji, że nie może uwierzytelnić:

WARNING:oauth2client.util:execute() takes at most 1 positional argument (2 given) 

ja wyraźnie tylko przyjmując jedną pozycyjną argument (auth_http) i szukałem w oauth2client/util.py, apiclient/http.py i oauth2client/client.py w celu uzyskania odpowiedzi, ale nic nie wydaje się nie w porządku. Znalazłem another stack overflow post, który napotkał ten sam problem, ale wydaje się, że w konstruktorze klasy OAuth2WebServerFlow w oauth2client/client.py, właściwość access_type jest już ustawiona na "offline" (choć szczerze mówiąc, nie do końca rozumiem, co się dzieje tutaj w zakresie konfiguracji przepływów oauth2.0).

Wszelkie sugestie będą mile widziane i z góry dziękujemy!

Odpowiedz

5

Uważam, że dokumentacja jest zła. Użyj następującego:

auth_http = credentials.authorize(http) 

# Build the service 
gce_service = build('compute', API_VERSION, http=auth_http) 
project_url = '%s%s' % (GCE_URL, PROJECT_ID) 

# List instances 
request = gce_service.instances().list(project=PROJECT_ID, filter=None, zone=DEFAULT_ZONE) 
response = request.execute() 
1

Można zrobić jedną z trzech rzeczy tutaj:

1 zignorować ostrzeżenia i nic nie robić.

2 tłumią ostrzeżenia i ustawia flagę ignorować:

import oauth2client 
import gflags 

gflags.FLAGS['positional_parameters_enforcement'].value = 'IGNORE' 

3 Rysunek gdzie parametr położenia jest przewidziane i zamocować go:

import oauth2client 
import gflags 

gflags.FLAGS['positional_parameters_enforcement'].value = 'EXCEPTION' 

# Implement a try and catch around your code: 
try: 
    pass 
except TypeError, e: 
    # Print the stack so you can fix the problem, see python exception traceback docs. 
    print str(e) 
Powiązane problemy