我使用 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”之类的服务时,会出现错误!

最佳答案

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

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

  • application_secret
  • 消费者 key
  • 方法
  • 完整请求 url
  • body
  • 服务器当前时间(考虑时间增量)

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

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

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

    10-08 01:57