专栏名称: 申龙斌的程序人生
分享可繁殖的知识与技能:GTD时间管理、读书心得、个人成长、财富自由之路
目录
相关文章推荐
程序员的那些事  ·  清北 DeepSeek 教程"神仙打架",北 ... ·  5 天前  
程序员的那些事  ·  刚刚!DeepSeek 杀入全球榜单第 2 ... ·  3 天前  
程序员小灰  ·  Manus,又一国产AI封神了,一码难求! ·  3 天前  
OSC开源社区  ·  听说技术大V们都被"manus"喂饱了,求邀 ... ·  4 天前  
编程技术进阶  ·  超详细的 Manus 分析报告流出(速领,待会删) ·  3 天前  
编程技术进阶  ·  超详细的 Manus 分析报告流出(速领,待会删) ·  3 天前  
51好读  ›  专栏  ›  申龙斌的程序人生

Bigone API 升级到v2,害死程序员

申龙斌的程序人生  · 公众号  · 程序员  · 2018-06-26 23:23

正文

最近 调动到北京工作 ,以前开发的 三角套利程序 竟然不能正常运行了,真是币圈一天,人间一年。最近稍微有一点点空闲时间,重拾搬砖程序,却发现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 ---


近期文章:







请到「今天看啥」查看全文