Coinbase Wallet API python身份验证错误,Signatu无效

2024-06-17 15:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

Python 3.4 Coinbase Wallet API V2


我已经被困了一段时间试图弄清楚这个购买电话 (以及其他api调用,如get_payment_methods()和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成员。在


什么有效:

^{pr2}$

误差如下:

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 buy方法,这就是我的API_呼叫.py我认为这是因为我可以从单独的文件甚至api内部的类缩进之外调用buy方法(和其他方法)_呼叫.py. 在


有人知道为什么这会引起身份验证错误吗?我在error.py四处找了一下,但还没有找到一个线索来解释为什么会发生这种情况。在

一如既往,对此事的任何帮助或想法都将不胜感激!在


编辑

在同一个文件上运行了工作代码和非工作代码之后,我成功地实现了这两个目标。在尝试了其他一些事情之后,我发现显然任何使用这些全局修改的变量、命令行参数和更新的对象成员变量的API发布都会产生这种身份验证错误。这应该发生吗?在

from coinbase.wallet.client import Client

#Globals
key = 'xxxxxx'
secret = 'yyyyyy'
account = 'zzzzzzz'
payment = 'aaaaaaa'

class api_call(object):                                                                                                           

  def __init__(self):                                                                                                           
      self.CB_key = None                                                                                                        
      self.CB_secret = None                                                                                                    
      self.CB_account = None                                                                                                    
      self.CB_payment_method = None

  def buy_c(self, exchange, b_amount):                                                                                
      client = Client(key, secret)                                                                          
      buy = client.buy(account, amount=str(b_amount), currency="USD", payment_method=payment)

client = Client(key, secret)
buy = client.buy(account, amount='1', currency="USD", payment_method=payment)

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

Tags: keypyselfclientapisecretlinebuy
1条回答
网友
1楼 · 发布于 2024-06-17 15:34:17

经过广泛的静态分析,我认为这可能是你的问题。在

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

还要弄清楚为什么堆栈跟踪有client.buy_c而不是{}

相关问题 更多 >