Sample code for 30+ languages & platforms
Objective-C

TikTok Shop Get Authorized Shops

See more TikTok Shop Examples

An example showing how to get the authorized shops in the TikTok Shops API.

Chilkat Objective-C Downloads

Objective-C
#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;
}

CkoJsonObject *queryParams = [[CkoJsonObject alloc] init];
[queryParams UpdateString: @"app_key" value: @"APP_KEY"];
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 = @"/authorization/202309/shops";

// 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/authorization/202309/shops" json: queryParams response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[resp GetBodyJson: json];

NSLog(@"%d",[resp.StatusCode intValue]);
NSLog(@"%@",resp.BodyStr);

// Sample JSON response...
// Use this online tool to generate parsing code from sample JSON: 
// Generate Parsing Code from JSON

// {
//   "code": 0,
//   "data": {
//     "shops": [
//       {
//         "cipher": "GCP_XF90igAAAABh00qsWgtvOiGFNqyubMt3",
//         "code": "CNGBCBA4LLU8",
//         "id": "7000714532876273420",
//         "name": "Maomao beauty shop",
//         "region": "GB",
//         "seller_type": "CROSS_BORDER"
//       }
//     ]
//   },
//   "message": "Success",
//   "request_id": "202203070749000101890810281E8C70B7"
// }

NSString *cipher = 0;
NSString *code_str = 0;
NSString *id = 0;
NSString *name = 0;
NSString *region = 0;
NSString *seller_type = 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.shops"] intValue];
while (i < count_i) {
    json.I = [NSNumber numberWithInt: i];
    cipher = [json StringOf: @"data.shops[i].cipher"];
    code_str = [json StringOf: @"data.shops[i].code"];
    id = [json StringOf: @"data.shops[i].id"];
    name = [json StringOf: @"data.shops[i].name"];
    region = [json StringOf: @"data.shops[i].region"];
    seller_type = [json StringOf: @"data.shops[i].seller_type"];
    i = i + 1;
}