Objective-C
Objective-C
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 Objective-C Downloads
#import <CkoHttp.h>
#import <CkoJsonObject.h>
#import <CkoDateTime.h>
#import <NSString.h>
#import <CkoStringBuilder.h>
#import <CkoCrypt2.h>
#import <CkoHttpResponse.h>
BOOL success = NO;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoHttp *http = [[CkoHttp alloc] init];
// 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
CkoJsonObject *jsonToken = [[CkoJsonObject alloc] init];
success = [jsonToken LoadFile: @"qa_data/tokens/tiktok-shops.json"];
if (success != YES) {
NSLog(@"%@",@"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
CkoJsonObject *queryParams = [[CkoJsonObject alloc] init];
[queryParams UpdateString: @"app_key" value: @"APP_KEY"];
[queryParams UpdateString: @"shop_cipher" value: @"SHOP_CIPHER"];
[queryParams UpdateString: @"shop_id" value: @"SHOP_ID"];
CkoDateTime *dt = [[CkoDateTime alloc] init];
[queryParams UpdateString: @"timestamp" value: [dt GetAsUnixTimeStr: NO]];
[queryParams UpdateInt: @"version" value: [NSNumber numberWithInt: 202309]];
// Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
BOOL ascending = YES;
BOOL caseSensitive = YES;
[queryParams Sort: ascending caseSensitive: caseSensitive];
NSString *appSecret = @"APP_SECRET";
NSString *path = @"/product/202309/categories";
// Build the StringToSign
CkoStringBuilder *sb = [[CkoStringBuilder alloc] init];
[sb Append: appSecret];
[sb Append: path];
int numParams = [queryParams.Size intValue];
int i = 0;
while (i < numParams) {
[sb Append: [queryParams NameAt: [NSNumber numberWithInt: i]]];
[sb Append: [queryParams StringAt: [NSNumber numberWithInt: i]]];
i = i + 1;
}
[sb Append: appSecret];
CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init];
crypt.HashAlgorithm = @"SHA256";
crypt.MacAlgorithm = @"HMAC";
crypt.EncodingMode = @"hex_lower";
[crypt SetMacKeyString: appSecret];
NSString *sig = [crypt MacStringENC: [sb GetAsString]];
[queryParams UpdateString: @"access_token" value: [jsonToken StringOf: @"data.access_token"]];
[queryParams UpdateString: @"sign" value: sig];
[http SetRequestHeader: @"x-tts-access-token" value: [jsonToken StringOf: @"data.access_token"]];
[http SetRequestHeader: @"content-type" value: @"application/json"];
CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpParams: @"GET" url: @"https://open-api.tiktokglobalshop.com/product/202309/categories" json: queryParams response: resp];
if (success == NO) {
NSLog(@"%@",http.LastErrorText);
return;
}
CkoJsonObject *json = [[CkoJsonObject alloc] init];
[resp GetBodyJson: json];
NSLog(@"%d",[resp.StatusCode intValue]);
NSString *id = 0;
BOOL is_leaf;
NSString *local_name = 0;
NSString *parent_id = 0;
int j;
int count_j;
NSString *strVal = 0;
int code = [[json IntOf: @"code"] intValue];
NSString *message = [json StringOf: @"message"];
NSString *request_id = [json StringOf: @"request_id"];
i = 0;
int count_i = [[json SizeOfArray: @"data.categories"] intValue];
while (i < count_i) {
json.I = [NSNumber numberWithInt: 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"];
NSLog(@"%@%@",@"local_name: ",local_name);
parent_id = [json StringOf: @"data.categories[i].parent_id"];
j = 0;
count_j = [[json SizeOfArray: @"data.categories[i].permission_statuses"] intValue];
while (j < count_j) {
json.J = [NSNumber numberWithInt: j];
strVal = [json StringOf: @"data.categories[i].permission_statuses[j]"];
j = j + 1;
}
i = i + 1;
}