コンテンツにスキップ

認証認可

トークン、シークレットキーの申請および変更については、「個人センター - 開放インターフェース」ページで関連操作を行ってください。

インターフェースの権限検証

クライアントリクエスト取引インターフェース、headerにはNonce、token、Signatureパラメーターをすべて添付する必要があります。例えば:

Python
$header[] = 'Nonce: 1534927978_ab43c';
$header[] = 'Token: 57ba172a6be125cca2f449826f9980ca';
$header[] = 'Signature: v490hupi0s0bckcp6ivb69p921';
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

token:

ユーザートークン、"個人センター - 開放インターフェース"でご確認ください。

Nonce:

ランダム番号、クライアントは毎回リクエストにランダムな文字列を生成します。生成ルール、タイムスタンプ_5桁のランダムな英数字。例:1534927978_ab43c 注意:時間の誤差は60秒を超えてはならない。同じ乱数は一度しか使用できない。

Signature:

サインイン、$token、$secret_key、$nonce、$_POST、$_GETを計算して得られるもので、サーバーはサインインを検証してリクエストがユーザーからのものであることを確認します。

Signatureを生成するPythonのサンプルコード:

Python
def sign(Nonce,data=dict()):

    tmp = list()
    tmp.append(TOKEN)
    tmp.append(SECRET)
    tmp.append(Nonce)
    for d,x in data.items():
        tmp.append(str(d) + "=" + str(x))

    return hashlib.sha1(''.join(sorted(tmp))).hexdigest()

Signatureを生成するPHPのサンプルコード:

PHP
private function signature($nonce)
{
    $token = TOKEN;
    $secret_key = SECRET-KEY;
    $tmpArr = array($api_key,$secret_key,$nonce);
    foreach($_GET as $k=>$v){
        $tmpArr[] = $k."=".$v;
    }
    foreach($_POST as $k=>$v){
        $tmpArr[] = $k."=".$v;
    }
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $signature = sha1( $tmpStr );
    return $signature;
}

Signatureを生成するJavaのサンプルコード:

Java
List<String> paramArr = new ArrayList<>();
String token = "57ba172a6be125c";
String nonce = "1534927978_ab43c";
String secretKey = "ca2f449826f9980ca";
paramArr.add(token);
paramArr.add(secretKey);
paramArr.add(nonce);
//すべてのリクエストパラメータを取得
Enumeration enu=request.getParameterNames();
while(enu.hasMoreElements()){
    String paramKv = "";
    String paramName=(String)enu.nextElement();
    String paramVal=request.getParameter(paramName);
    paramKv += paramName;
    paramKv += "=";
    paramKv += paramVal;
    paramArr.add(paramKv);
}
Collections.sort(paramArr, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        String str1=(String) o1;
        String str2=(String) o2;
        if (str1.compareToIgnoreCase(str2)<0){
            return -1;
        }
        return 1;
    }
});
//接続文字列に変換
String paramStr = String.join("", paramArr);
String signature =DigestUtils.sha1Hex(paramStr);

例:

Text Only
#想定:
$token = "57ba172a6be125c";
$secret_key = "ca2f449826f9980ca";
$nonce = "1534927978_ab43c";

#リクエストインターフェースアドレス
/openApi/entrust/currentList
#提出パラメーター
symbol = "BTC-USDT";
type = "1"

#ソートされた文字列
1534927978_ab43c57ba172a6be125cca2f449826f9980casymbol=BTC-USDTtype=1

#sha1計算後:
$signature は 731faa3d170bb746a767cea58ae563830594e1fe