Sample code for 30+ languages & platforms
Rust Requires Chilkat v11.0.0+

TikTok Shop Get Categories

See more TikTok Shop Examples

An example showing how to use a TikTok Shops access token in an API call.

Chilkat Rust Downloads

Rust

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

let http = chilkat::Http::new();

// 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
let json_token = chilkat::JsonObject::new();
if json_token.load_file("qa_data/tokens/tiktok-shops.json").is_err() {
    println!("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
let query_params = chilkat::JsonObject::new();
let _ = query_params.update_string("app_key", "APP_KEY");
let _ = query_params.update_string("shop_cipher", "SHOP_CIPHER");
let _ = query_params.update_string("shop_id", "SHOP_ID");
let dt = chilkat::DateTime::new();
let _ = query_params.update_string("timestamp", &dt.get_as_unix_time_str(false).unwrap_or_default());
let _ = query_params.update_int("version", 202309);

// Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
let ascending = true;
let case_sensitive = true;
query_params.sort(ascending, case_sensitive);

let app_secret = "APP_SECRET".to_string();
let path = "/product/202309/categories".to_string();

// Build the StringToSign
let sb = chilkat::StringBuilder::new();
let _ = sb.append(&app_secret);
let _ = sb.append(&path);
let num_params = query_params.size();
let mut i = 0;
while i < num_params {
    let _ = sb.append(&query_params.name_at(i).unwrap_or_default());
    let _ = sb.append(&query_params.string_at(i).unwrap_or_default());
    i = i + 1;
}

let _ = sb.append(&app_secret);

let crypt = chilkat::Crypt2::new();
crypt.set_hash_algorithm("SHA256");
crypt.set_mac_algorithm("HMAC");
crypt.set_encoding_mode("hex_lower");
let _ = crypt.set_mac_key_string(&app_secret);

let sig = crypt.mac_string_enc(&sb.get_as_string().unwrap_or_default()).unwrap_or_default();

let _ = query_params.update_string("access_token", &json_token.string_of("data.access_token").unwrap_or_default());
let _ = query_params.update_string("sign", &sig);

http.set_request_header("x-tts-access-token", &json_token.string_of("data.access_token").unwrap_or_default());
http.set_request_header("content-type", "application/json");

let resp = chilkat::HttpResponse::new();
if http.http_params("GET", "https://open-api.tiktokglobalshop.com/product/202309/categories", &query_params, &resp).is_err() {
    println!("{}", http.last_error_text());
    return;
}

let json = chilkat::JsonObject::new();
let _ = resp.get_body_json(&json);

println!("{}", resp.status_code());

let mut local_name = String::new();
let mut j: i32 = 0;
let mut count_j: i32 = 0;

let code = json.int_of("code");
let message = json.string_of("message").unwrap_or_default();
let request_id = json.string_of("request_id").unwrap_or_default();
i = 0;
let count_i = json.size_of_array("data.categories");
while i < count_i {
    json.set_i(i);
    let _ = json.string_of("data.categories[i].id").unwrap_or_default();
    let _ = json.bool_of("data.categories[i].is_leaf");
    local_name = json.string_of("data.categories[i].local_name").unwrap_or_default();
    println!("local_name: {}", local_name);
    let _ = json.string_of("data.categories[i].parent_id").unwrap_or_default();
    j = 0;
    count_j = json.size_of_array("data.categories[i].permission_statuses");
    while j < count_j {
        json.set_j(j);
        let _ = json.string_of("data.categories[i].permission_statuses[j]").unwrap_or_default();
        j = j + 1;
    }

    i = i + 1;
}