Data API
概要
本稿では DATA 開発連携に関する内容を紹介します。
データインターフェース認証ログイン
プラットフォームが公開するインターフェースサービス(RESTfulスタイルのHttpサービス)はすべて認証ログインが必要であり、データの安全性を確保します。現在サポートされている認証方式は Bearer Token のみです。
連携準備
プラットフォームから client_id と client_secret のペアを取得する必要があります。これはあなたのアプリケーションの唯一の識別子であり、access_token を取得するために使用されます。
身分認証
client_id と client_secret を取得したら、以下の手順で access_token を取得できます:
第1ステップ:署名の生成
署名生成ルール:client_id + 現在のタイムスタンプ + client_secret を連結し、MD5で暗号化します。暗号化後の32桁の大文字文字列が署名文字列となります。
-
署名生成例:
- javascript
- c#
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
const client = "入力してください client_id"
const secret = "入力してください client_secret"
const timestamp = Math.ceil(+new Date() / 1000) // 現在のタイムスタンプ(10桁)
const plaintext = `${client}${timestamp}${secret}` // 署名の平文
const signature = CryptoJS.MD5(plaintext).toString().toUpperCase(); // 署名を取得
console.log(`署名結果:${signature}`)
</script>using System.Security.Cryptography;
var client = "入力してください client_id";
var secret = "入力してください client_secret";
var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds() / 1000; // 現在のタイムスタンプ(10桁)
var plaintext = $"{client}{timestamp}{secret}"; // 署名の平文
var signature = Convert.ToHexString(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(plaintext))); // 署名を取得
Console.WriteLine($"署名結果:{signature}");
第2ステップ:認証リクエストの送信
-
リクエスト方式:POST
-
Content-Type:
application/json -
リクエストパラメータ:
パラメータ名 型 必須 説明 clientId 文字列 はい クライアント(プラットフォーム提供) time 数値 はい 現在のタイムスタンプ signature 文字列 はい 署名(client_id + time + client_secret を連結し、MD5で暗号化した32桁の大文字文字列) -
リクエスト例:
curl --location 'https://localhost/api/TokenAuth/Authenticate' \
--header 'Content-Type: application/json' \
--data '{
"clientId": "openapi",
"time": 1724753509317,
"signature": "B9DBA02F6223468F16E8250D8F080CFF"
}' -
レスポンスパラメータ:
パラメータ名 サブパラメータ 説明 code ステータスコード data 結果データ accessToken アクセストークン expireInSeconds 有効時間(秒) success 成功したかどうか msg エラーメッセージ -
レスポンス例:
{
"code": 200,
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc0V4dGVybmFsIjpmYWxzZSwidXNlcklkIjoiNDMyNDMwMDg0OTY4Njc3Nzg1NyIsImFjY291bnQiOiJXZWxsaW5ndG9uQXBpIiwicmVhbE5hbWUiOiJXZWxsaW5ndG9uQXBpIiwidXNlclR5cGUiOiJkZGFfY2xpZW50Iiwic3lzdGVtIjoiSE9NRSIsImVtYWlsIjpudWxsLCJhdmF0YXIiOm51bGwsImdsb2JlUm9sZU5hbWUiOm51bGwsImNsaWVudFR5cGUiOjAsIm11c3RDaGFuZ2VQd2QiOmZhbHNlLCJleHAiOjE3Mjg4MDcyMDV9.J0oiH0hzYv72X65DZEOoAxDV6PsNuUuyKhNYkdlaD90",
"expireInSeconds": 86400
},
"success": true,
"msg": null
}