前提・実現したいこと
GoogleAppsScriptを使って仮想通貨取引サイトBitMEXのREST APIを使ったアプリケーションを作成しようとしています。
具体的に言うと、損益を取得しようとしています。
発生している問題・エラーメッセージ
いろいろなサイトを参考にして署名やapi-expiresの指定などをしたのですが、
api-expiresの時刻を300秒程度猶予をもたせているにも関わらず、下記のエラーが発生しています。
{"message":"This request has expired - `expires` is in the past. Current time: 1567689266","name":"HTTPError"}}
該当のソースコード
GoogleAppsScript
1function getBalance() { 2 var date = new Date(); 3 var base_url = "https://www.bitmex.com"; 4 var api_key = ""; 5 var api_secret = ""; 6 var api_expires = Math.floor(date.getTime()/ 1000) + 300; 7 var verb = "GET"; 8 var path = "/api/v1/user/margin?currency=XBt" 9 var tex = verb + path + String(api_expires); 10 var api_signature = Utilities.computeHmacSha256Signature(api_secret, tex); 11 var sign = api_signature.reduce(function(str,chr){ 12 chr = (chr < 0 ? chr + 256 : chr).toString(16); 13 return str + (chr.length==1?'0':'') + chr; 14 },''); 15 16 // https://www.bitmex.com/api/v1/user/margin?currency=XBt 17 // margin balance 18 var header = {'api-expires': api_expires, 19 'api-key': api_key, 'api-signature': sign,}; 20 21 var options = { 22 method: verb, 23 headers: header 24 }; 25 Logger.log(api_expires.toString()); 26 var res = UrlFetchApp.fetch(base_url + path, options); 27 var json = JSON.parse(res.getContentText()); 28 Logger.log(json)
試したこと
署名方法の変更やより猶予をもたせてみたりしてみましたが、変わりませんでした
補足情報(FW/ツールのバージョンなど)
GASのタイムゾーン設定は東京です
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/06 07:14
2019/09/06 09:05