のPython 3.4 CoinbaseウォレットAPIのV2CoinbaseウォレットAPIのPythonの認証エラー、無効な署名
私はこれがget_payment_methodsよう (および他のAPIコールを呼び出す購入しながら把握しようとしているいくつかの時間のために立ち往生されています()とget_accounts())は認証エラーに陥ります。私は、別々のファイルでこれらのapi呼び出しを単独で実行することに成功しました。
機能しないもの:
class api_call(object):
def __init__(self):
self.CB_key = xxxxxxxx
self.CB_secret = yyyyyyyy
self.CB_account = zzzzzzzzz
self.CB_payment_method = aaaaaaaaaa
def buy_c(self, exchange, b_amount):
client = Client(self.CB_key, self.CB_secret)
buy = client.buy(self.CB_account, amount=str(b_amount), currency="USD", payment_method=self.CB_payment_method)
api = api_call()
buy = api.buy('COIN-BS', 1)
私はトリプル私のアカウント、鍵と秘密をチェックしているし、また、ハードクラス定義の内部でそれらをコーディングする代わりにのinitメンバーを使用して試してみました。
何作品:次のように
from coinbase.wallet.client import Client
client = Client(<api_key>, <api_secret>)
buy = client.buy('zzzzzzzz', amount='1', currency="USD", payment_method='aaaaaaaaaa')
エラーは次のとおりです。
Traceback (most recent call last):
File "api_call.py", line 126, in <module>
buy = api.buy('COIN-BS', 1)
File "api_call.py", line 110, in buy
buy = client.buy_c(self.CB_account, amount=str(amount), currency="USD", payment_method="XXXXXXXXXXXX")
File "/home/LA/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 381, in buy
response = self._post('v2', 'accounts', account_id, 'buys', data=params)
File "/home/LA/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 132, in _post
return self._request('post', *args, **kwargs)
File "/home/LA/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 116, in _request
return self._handle_response(response)
File "/home/LA/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 125, in _handle_response
raise build_api_error(response)
coinbase.wallet.error.AuthenticationError: APIError(id=authentication_error): invalid signature
イム問題が原因買うAPIの使用にあってもよいことを考えクラスファイルの定義の中のメソッドです。つまり、私のapi_call.pyクラスです。 nバイメソッド(と他のもの)を別々のファイルから、そしてapi_call.py内のクラスインデントの外側からでもうまく呼び出すことができます。
なぜこれが認証エラーを引き起こすのでしょうか?私はerror.pyを見回しましたが、なぜこれが起こっているのかについての手掛かりはまだ見つかりませんでした。
いつもどんな助けや考えがあっても大変感謝しています。
EDIT
同じファイル上での作業と非作業コードを実行した後、私は正常に両方の買物を作ることができました。いくつかのことを試した結果、グローバルに変更された変数、コマンドライン引数、および更新されたオブジェクトメンバ変数を使用しているAPIに対するPOSTが、この認証エラーを生成することが明らかになりました。これは起こるはずですか?
の
client.buy_c
あなたが作業バージョンを投稿することができますを持っている理由も把握しますか? – James
@James確かに。私が編集したように小さなスクリプトとしてうまく動作します。 – Lamar
スコープの問題が発生する可能性を減らすために、作業していないサンプルと作業しているサンプルを同じファイルに入れ、すべての変数をグローバル定数に引き出し、両方のバージョンで同じ定数ですか?同じ問題がまだ発生するかどうかを確認してください。そうした場合は、同じ認証値を使用していることを明確に証明するコードをここで更新してください。 – James