Skip to content

🔐 MatchID API User Bind List Demo (Node.js) ​

This page demonstrates how to generate and use the MatchID API signature to call a secure backend endpoint — using Node.js — to get a user bind list.

✨ Overview ​

MatchID APIs require 3 key headers in each request:

  • appid – Your App ID
  • timestamp – 13-digit UNIX timestamp in milliseconds
  • sign – A signature you generate using HMAC SHA256

🧠 Where does did come from? ​

The did value used in the request body comes from your frontend using MatchID's SDK.

You can extract it after user login via the getAuthInfo() method in the useUserInfo hook:

Jump to getAuthInfo example

ts
const authInfo = await getAuthInfo(method);
console.log('🔑 Auth Info:', authInfo);
console.log('✅ did:', authInfo?.did);

🧱 Signature Formula ​

To generate the sign, use this formula:

sign = base64(HMAC_SHA256(timestamp + method + path + body, SECRET_KEY))

Where:

  • method is always uppercase (POST)
  • path is just the request path, e.g. /api/v1/partner/user/bind/list
  • body is the sorted and non-empty JSON

📦 Sample Code (Node.js) ​

js
const axios = require("axios");
const CryptoJS = require("crypto-js");

// === CONFIG ===
const APP_ID = "your_matchid_app_id";           // from your backend dashboard
const SECRET_KEY = "your_matchid_app_secret";   // from your backend dashboard
const BASE_URL = "https://api.matchid.ai";
const ENDPOINT = "/api/v1/partner/user/bind/list";

// Get this DID from your frontend after login
const did = "did:matchid:73f2bdc89ae1f6d7a4e952af23"; // Replace with its real value from your front-end

// === Step 1: Prepare Request Body ===
const requestBody = {
    requestBody: JSON.stringify({ did })
};

const bodyString = JSON.stringify({ did });

// === Step 2: Generate Signature ===
const timestamp = Date.now().toString();
const method = "POST";

const signatureBase = timestamp + method + ENDPOINT + bodyString;
const signature = CryptoJS.HmacSHA256(signatureBase, SECRET_KEY);
const sign = CryptoJS.enc.Base64.stringify(signature);

// === Step 3: Send the Request ===
axios.post(`${BASE_URL}${ENDPOINT}`, requestBody, {
    headers: {
        "Content-Type": "application/json",
        "appid": APP_ID,
        "timestamp": timestamp,
        "sign": sign
    }
})
    .then(res => {
        console.log("✅ Success:\n" + JSON.stringify(res.data, null, 2));
    })
    .catch(err => {
        console.error("❌ Error:\n", err.response?.data || err.message);
    });

✅ Sample Response (on your terminal) ​

Sample Response Screenshot