Sample code for 30+ languages & platforms
JavaScript

TikTok Shop Get Categories

See more TikTok Shop Examples

An example showing how to use a TikTok Shops access token in an API call.
Note
This example is intended for running within a Chilkat.Js embedded JavaScript engine. All Chilkat JavaScript examples require Chilkat v11.4.0 or greater.
JavaScript
var success = false;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

var http = new CkHttp();

// It is assumed we previously obtained an OAuth2 access token.
// This example loads the JSON access token file 
// saved by this example: Get TikTok Shop OAuth2 Access Token
// or refrehsed by this example: Get TikTok Shop Refresh OAuth2 Access Token
var jsonToken = new CkJsonObject();
success = jsonToken.LoadFile("qa_data/tokens/tiktok-shops.json");
if (success !== true) {
    console.log("Failed to load tiktok-shops.json");
    return;
}

// Replace values in all caps with your specific values.
// SHOP_CIPHER and SHOP_ID are returned from this example: Get Authorized Shops
var queryParams = new CkJsonObject();
queryParams.UpdateString("app_key","APP_KEY");
queryParams.UpdateString("shop_cipher","SHOP_CIPHER");
queryParams.UpdateString("shop_id","SHOP_ID");
var dt = new CkDateTime();
queryParams.UpdateString("timestamp",dt.GetAsUnixTimeStr(false));
queryParams.UpdateInt("version",202309);

// Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
var ascending = true;
var caseSensitive = true;
queryParams.Sort(ascending,caseSensitive);

var appSecret = "APP_SECRET";
var path = "/product/202309/categories";

// Build the StringToSign
var sb = new CkStringBuilder();
sb.Append(appSecret);
sb.Append(path);
var numParams = queryParams.Size;
var i = 0;
while (i < numParams) {
    sb.Append(queryParams.NameAt(i));
    sb.Append(queryParams.StringAt(i));
    i = i+1;
}

sb.Append(appSecret);

var crypt = new CkCrypt2();
crypt.HashAlgorithm = "SHA256";
crypt.MacAlgorithm = "HMAC";
crypt.EncodingMode = "hex_lower";
crypt.SetMacKeyString(appSecret);

var sig = crypt.MacStringENC(sb.GetAsString());

queryParams.UpdateString("access_token",jsonToken.StringOf("data.access_token"));
queryParams.UpdateString("sign",sig);

http.SetRequestHeader("x-tts-access-token",jsonToken.StringOf("data.access_token"));
http.SetRequestHeader("content-type","application/json");

var resp = new CkHttpResponse();
success = http.HttpParams("GET","https://open-api.tiktokglobalshop.com/product/202309/categories",queryParams,resp);
if (success == false) {
    console.log(http.LastErrorText);
    return;
}

var json = new CkJsonObject();
resp.GetBodyJson(json);

console.log(resp.StatusCode);

var id;
var is_leaf;
var local_name;
var parent_id;
var j;
var count_j;
var strVal;

var code = json.IntOf("code");
var message = json.StringOf("message");
var request_id = json.StringOf("request_id");
i = 0;
var count_i = json.SizeOfArray("data.categories");
while (i < count_i) {
    json.I = i;
    id = json.StringOf("data.categories[i].id");
    is_leaf = json.BoolOf("data.categories[i].is_leaf");
    local_name = json.StringOf("data.categories[i].local_name");
    console.log("local_name: " + local_name);
    parent_id = json.StringOf("data.categories[i].parent_id");
    j = 0;
    count_j = json.SizeOfArray("data.categories[i].permission_statuses");
    while (j < count_j) {
        json.J = j;
        strVal = json.StringOf("data.categories[i].permission_statuses[j]");
        j = j+1;
    }

    i = i+1;
}