最近
调动到北京工作
,以前开发的
三角套利程序
竟然不能正常运行了,真是币圈一天,人间一年。最近稍微有一点点空闲时间,重拾搬砖程序,却发现Bigone的API已经发生了重大变化,非常非常大的变化,不只是外界看到的ONE交易挖矿(API的开发者文档地址: https://open.big.one/,请自备VPN)。
v2版本的API与v1发生了非常大的变化,原来的API接口程序几乎要重写!坑死程序员!
首先,API的入口变为 https://big.one/api/v2/
当然换成https://b1.run/api/v2/ 也是可以的。
另外,API认证方式也发生了变化,以前Header只需要传递一个bigone指定的后台参数即可通过,现在要麻烦了一些。例如,以前的Header:
Authorization: Bearer eyJhbG*****************V4Vpro
现在这个令牌的生成更安全了,需要一个时间戳,而且需要一个称为JWT token的类库,网址是: https://jwt.io,这个网站里有各种编程语言的支持,请自行研究,我只把C#的例子写出来。
先添加一个nuget的jose-jwt的引用,然后:
using Jose;
Header中需要type, sub, nonce三个参数,sub是API key,请从bigone的后台获取,nonce是服务器的当前UNIX时间戳,请跑通下面的例子,密钥用testsecret。
public static bool TestJWT_Token()
{
var payload = new Dictionary
()
{
{ "type","OpenAPI"},
{ "sub", "cee88ab0bc69435784b7db0545e85647"},
{ "nonce", 1527665262168391000}
};
var secretKey = System.Text.Encoding.Default.GetBytes("testsecret");
string token = Jose.JWT.Encode(payload, secretKey, JwsAlgorithm.HS256);
if (!token.Contains("joiT3BlbkFQSSIsInN1YiI6ImNlZTg")) return false;
if (!token.Contains("NTc4NGI3ZGIwNTQ1ZTg1")) return false;
if (!token.Contains("UyNjIxNjgz")) return false;
if (!token.EndsWith("To1WxbWV4Vpro")) return false;
return true;
}
如果客户端没有精确的UNIX时间,可以使用Ping命令,访问URL为:
https://big.one/api/v2/ping
如果一切正常,则可能得到类似下面的内容:
{ "timestamp": 1527665262168391000 }
然后,需要把key换成自己帐号的API Key
var payload = new Dictionary
()
{
{ "type","OpenAPI"},
{ "sub", 自己的API_Key },
{ "nonce", 刚才用Ping()得到的时间戳 }
};
// 下面的secret是bigone账户中得到的API Secret。
var secretKey = System.Text.Encoding.Default.GetBytes(secret);
apiToken = Jose.JWT.Encode(payload, secretKey, JwsAlgorithm.HS256);
上面得到的apiToken就是以前v1版本的令牌,比以前更加安全了。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiT3BlbkFQSSIsInN1YiI6ImNlZTg4YWIwYmM2OTQzNTc4NGI3ZGIwNTQ1ZTg1NjQ3Iiwibm9uY2UiOjE1Mjc2NjUyNjIxNjgzOTEwMDB9.YNpae4v_-OU7h2sknRPa3XPhDcC3p-To1WxbWV4Vpro
害死我了,以前获得行情信息、生成交易、获取账户余额等API全部有变化,以后慢慢改吧。
今天的文章只适合程序员看,如果你不是程序员,还可以点广告。
点击文末的广告,我会收到5毛钱,
用于支付北京呼家楼6800元的房租,谢谢!
--- END ---
近期文章: