BadParametersError:使用OVH Python包装器时签名无效

我正在使用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”这样的服务时,错误就会引发!

最佳答案 很难重现这个问题,因为它需要一个应用程序密钥,而且它似乎只授予OVH的现有客户.我甚至看不到他们网站上的帐户注册页面的链接.

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

> application_secret
> consumer_key
>方法
>完整的请求网址
>身体
>服务器当前时间(考虑时间delta)

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

另见“签署请求”标题下的documentation on OVH site.他们解释了如何制作签名以及它应该是什么样子.

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

点赞