2016-06-22 9 views
0

の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が、この認証エラーを生成することが明らかになりました。これは起こるはずですか?

+0

client.buy_cあなたが作業バージョンを投稿することができますを持っている理由

buy = api.buy('COIN-BS', 1) -> buy = api.buy_c('COIN-BS', 1) 

も把握しますか? – James

+0

@James確かに。私が編集したように小さなスクリプトとしてうまく動作します。 – Lamar

+0

スコープの問題が発生する可能性を減らすために、作業していないサンプルと作業しているサンプルを同じファイルに入れ、すべての変数をグローバル定数に引き出し、両方のバージョンで同じ定数ですか?同じ問題がまだ発生するかどうかを確認してください。そうした場合は、同じ認証値を使用していることを明確に証明するコードをここで更新してください。 – James

答えて

0

大規模な静的解析の後、私はこれがおそらく問題であると結論付けました。あなたのスタックトレースが代わりにclient.buy

+0

これはページに自分のコードを書き込むときの事故でした。実際には問題ではありません。気づいてくれてありがとう! – Lamar

関連する問題