4

私はPythonラッパーと一緒にOVH APIを使用しています:

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
  • consumer_key
  • 方法
  • 完全なリクエスト URL
  • サーバーの現在の時刻 (時間差を考慮)

この呼び出しは、OVH Python パッケージの Web ページで提供されているサンプル コードと同じであるため、最後の 4 つのパラメーターは有効である必要があります。その場合、構成ファイル内のアプリケーション シークレットまたは顧客キー(またはその両方) が正しくないようです。

「Signing requests」という見出しの下にある OVH サイトのドキュメントも参照してください。署名がどのように作成され、どのように見えるべきかを説明します。

おそらく、新しいアプリケーション API を再作成して新しいキーとシークレットを取得し、文字を追加せずにそれらをコピーしてください。

于 2016-05-08T23:25:10.547 に答える