Rust Requires Chilkat v11.0.0+
Rust
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
// 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;
}