Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python bitfinex api v2错误,密钥无效_Python_Api_Request_Urllib_Bitcoin - Fatal编程技术网

Python bitfinex api v2错误,密钥无效

Python bitfinex api v2错误,密钥无效,python,api,request,urllib,bitcoin,Python,Api,Request,Urllib,Bitcoin,我试图对他们新的v2 api进行基本的身份验证api调用,并返回一个无效的api密钥错误 我重新发布api密钥只是为了验证,同样的错误 from time import time import urllib.request import urllib.parse import hashlib import hmac APIkey = b'myapikeyyouarenotsupposedtosee' secret = b'myceeeeecretkeyyyy' url = 'https://

我试图对他们新的v2 api进行基本的身份验证api调用,并返回一个无效的api密钥错误

我重新发布api密钥只是为了验证,同样的错误

from time import time
import urllib.request
import urllib.parse
import hashlib
import hmac

APIkey = b'myapikeyyouarenotsupposedtosee'
secret = b'myceeeeecretkeyyyy'

url = 'https://api.bitfinex.com/v2/auth/r/wallets'

payload = {
    #'request':'/auth/r/wallets',
    'nonce': int(time() * 1000),
}

paybytes = urllib.parse.urlencode(payload).encode('utf8')
print(paybytes)

sign = hmac.new(secret, paybytes, hashlib.sha512).hexdigest()
print(sign)

headers = {
    'Key': APIkey,
    'Sign': sign
}

req = urllib.request.Request(url, headers=headers, data=paybytes)
with urllib.request.urlopen(req) as response:
    the_page = response.read()
    print(the_page)

如何对bitfinex的新v2 api进行身份验证api调用?

为什么不使用一个开源api客户端呢?你可以和你的工作相比。
您的标题错误。我也在尝试这样做,并尝试使用bitfinex v2 api文档中的,但是他们的示例包含一个bug,他们需要首先将字符串编码到UTF-8字节数组中。因此,我已经修复了它,并在下面发布了整个示例

#
# Example Bitfinex API v2 Auth Python Code
#
import requests  # pip install requests
import json
import base64
import hashlib
import hmac
import os
import time #for nonce

class BitfinexClient(object):
    BASE_URL = "https://api.bitfinex.com/"
    KEY = "API_KEY_HERE"
    SECRET = "API_SECRET_HERE"

    def _nonce(self):
        # Returns a nonce
        # Used in authentication
        return str(int(round(time.time() * 10000)))

    def _headers(self, path, nonce, body):
        secbytes = self.SECRET.encode(encoding='UTF-8')
        signature = "/api/" + path + nonce + body
        sigbytes = signature.encode(encoding='UTF-8')
        h = hmac.new(secbytes, sigbytes, hashlib.sha384)
        hexstring = h.hexdigest()
        return {
            "bfx-nonce": nonce,
            "bfx-apikey": self.KEY,
            "bfx-signature": hexstring,
            "content-type": "application/json"
        }

    def req(self, path, params = {}):
        nonce = self._nonce()
        body = params
        rawBody = json.dumps(body)
        headers = self._headers(path, nonce, rawBody)
        url = self.BASE_URL + path
        resp = requests.post(url, headers=headers, data=rawBody, verify=True)
        return resp

    def active_orders(self):
        # Fetch active orders
        response = self.req("v2/auth/r/orders")
        if response.status_code == 200:
          return response.json()
        else:
          print('error, status_code = ', response.status_code)
          return ''

# fetch all your orders and print out
client = BitfinexClient()
result = client.active_orders()
print(result)

它们正在使用v1api。我正在尝试编写最新的版本。我实际上有一个V1连接。如果您需要它用于PHP或想与PHP进行比较:我刚刚发现,
bfx签名
字符串必须是小写。您可以添加一些示例输入和结果输出以进行检查吗?