產生 Headers
Last updated
yarn add graphql-request graphql crypto-js # yarn
npm install graphql-request graphql crypto-js # npmimport HmacSHA256 from "crypto-js/hmac-sha256.js";
import Base64 from "crypto-js/enc-base64.js";
import { request, gql } from "graphql-request";
const KEY = "YOUR_CREATOR_ADMIN_API_KEY";
const SECRET = "YOUR_CREATOR_ADMIN_API_SECRET";
const url = "https://creator.qubic.app/admin/graphql";
const urlObj = new URL(url);
const resource = `${urlObj.pathname}${urlObj.search}`; // output: /admin/graphql
const now = Date.now();
const msg = `${now}POST${resource}`;
const sig = HmacSHA256(msg, SECRET).toString(Base64);
const requestHeaders = {
"x-qubic-api-key": KEY,
"x-qubic-ts": now.toString(),
"x-qubic-sign": sig,
};
const document = gql`
query shop {
shop {
id
}
}
`;
const result = await request({
url,
document,
requestHeaders,
});
console.log(result);yarn add graphql-request graphql crypto-js # yarn
npm install graphql-request graphql crypto-js # npmimport HmacSHA256 from "crypto-js/hmac-sha256.js";
import Base64 from "crypto-js/enc-base64.js";
import { request, gql, resolveRequestDocument } from "graphql-request";
const KEY = "YOUR_CREATOR_ADMIN_API_KEY";
const SECRET = "YOUR_CREATOR_ADMIN_API_SECRET";
const url = "https://creator.qubic.app/admin/graphql";
const urlObj = new URL(url);
const resource = `${urlObj.pathname}${urlObj.search}`; // output: /admin/graphql
const document = gql`
query shop {
shop {
id
}
}
`;
const { operationName, query } = resolveRequestDocument(document);
const body = JSON.stringify({
query,
operationName,
});
const now = Date.now();
const msg = `${now}POST${resource}${body}`;
const sig = HmacSHA256(msg, SECRET).toString(Base64);
const requestHeaders = {
"x-qubic-api-key": KEY,
"x-qubic-ts": now.toString(),
"x-qubic-sign": sig,
};
const result = await request({
url,
document,
requestHeaders,
});
console.log(result);yarn add crypto-js # yarn
npm install crypto-js # npmimport HmacSHA256 from "crypto-js/hmac-sha256.js";
import Base64 from "crypto-js/enc-base64.js";
function sign(option) {
const { now, method, resource, secret } = option;
const msg = `${now}${method}${resource}`;
const sign = HmacSHA256(msg, secret).toString(Base64);
return { msg, sign };
}
const { msg, sign } = sign({
now: 1689907490132,
method: "POST",
resource: "/admin/graphql",
secret: "secret",
});
console.log(msg === "1689907490132POST/admin/graphql"); // true
console.log(sign === "d1tZksk8khiWQ+UTUY7m6u1Msb5Oyhfej+c384e5GM8="); // trueyarn add crypto-js # yarn
npm install crypto-js # npmimport HmacSHA256 from "crypto-js/hmac-sha256.js";
import Base64 from "crypto-js/enc-base64.js";
function signSec(option) {
const { now, body, method, resource, secret } = option;
const msg = `${now}${method}${resource}${body}`;
const sign = HmacSHA256(msg, secret).toString(Base64);
return { msg, sign };
}
const { msg, sign } = signSec({
now: 1566549227549,
body: "the_body",
method: "PUT",
resource: "/test/path?currency=USD",
secret: "secret",
});
console.log(msg === "1566549227549PUT/test/path?currency=USDthe_body"); // true
console.log(sign === "xN/7FHzMvIVbJYESYPJlMwNHL9r3DBZ21lsjSn5W3Bo="); // true