7

我正在尝试使用他们在https://developers.google.com/compute/docs/api/python_guide#setup上的“hello world”教程开始使用适用于 Google Compute Engine 的 Python API

但是,无论何时拨打电话response = request.execute(auth_http),我都会收到以下错误信号,表明我无法进行身份验证:

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

我显然只传递了一个位置参数(auth_http),并且我已经查看了 oauth2client/util.py、apiclient/http.py 和 oauth2client/client.py 的答案,但似乎没有任何问题。我发现另一个遇到相同问题的堆栈溢出帖子,但似乎在 oauth2client/client.py 中 OAuth2WebServerFlow 类的构造函数中,“access_type”已经设置为“离线”(虽然老实说我不完全了解在设置 oauth2.0 流程方面发生了什么)。

任何建议将不胜感激,并在此先感谢!

4

3 回答 3

9

查看代码,@util.positional(1) 注释正在引发警告。避免使用命名参数。

代替:

response = request.execute(auth_http)

做:

response = request.execute(http=auth_http)

https://code.google.com/p/google-api-python-client/source/browse/apiclient/http.py#637

于 2013-05-20T05:38:01.583 回答
5

我认为文档是错误的。请使用以下内容:

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()
于 2013-04-17T13:22:12.027 回答
2

你可以在这里做三件事之一:

1 忽略警告,什么也不做。

2 抑制警告并将标志设置为忽略:

import oauth2client
import gflags

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

3 找出提供位置参数的位置并修复它:

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)
于 2013-09-23T20:40:55.843 回答