4

我正在使用 OVH API 和 python 包装器:

https://pypi.python.org/pypi/ovh

尝试执行此代码时:

import ovh

client = ovh.Client()

# Print nice welcome message
print "Welcome", client.get('/me')['firstname']

我收到此错误:

Traceback (most recent call last):
  File "index.py", line 6, in <module>
    print "Welcome", client.get('/me')['firstname']
  File "/home/rubinhozzz/.local/lib/python2.7/site-packages/ovh/client.py", line 290, in get
    return self.call('GET', _target, None, _need_auth)
  File "/home/rubinhozzz/.local/lib/python2.7/site-packages/ovh/client.py", line 419, in call
    raise BadParametersError(json_result.get('message'))
ovh.exceptions.BadParametersError: Invalid signature

正如文档所建议的那样,我的信息保存在 ovh.conf 中。

[default]
; general configuration: default endpoint
endpoint=ovh-eu

[ovh-eu]
application_key=XXXlVy5SE7dY7Gc5
application_secret=XXXdTEBKHweS5F0P0tb0lfOa8GoQPy4l
consumer_key=pscg79fXXX8ESMIXXX7dR9ckpDR7Pful

看起来我可以连接,但是当尝试使用诸如“/me”之类的服务时,会出现错误!

4

1 回答 1

2

很难重现该问题,因为它需要应用程序密钥,而且似乎只授予 OVH 的现有客户。我什至看不到他们网站上帐户注册页面的链接。

通过查看/ovh/client.py 中的 call() 方法的代码,他们的服务器似乎无法识别脚本发送的签名的格式或内容。根据内联文档,签名是从这些参数生成的:

  • application_secret
  • 消费者密钥
  • 方法
  • 完整的请求网址
  • 身体
  • 服务器当前时间(考虑时间增量)

由于您的调用与 OVH Python 包网页上提供的示例代码相同,因此最后四个参数应该是有效的。在这种情况下,您的配置文件中的应用程序密钥客户密钥(或两者)看起来都不正确。

另请参阅OVH 网站上“签署请求”标题下的文档。他们解释了签名是如何制作的以及它应该是什么样子。

也许尝试重新创建一个新的应用程序 API 以获取新的密钥和秘密,并确保您复制它们时没有任何额外的字符。

于 2016-05-08T23:25:10.547 回答