C
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 C Downloads
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkDateTime.h>
#include <C_CkStringBuilder.h>
#include <C_CkCrypt2.h>
#include <C_CkHttpResponse.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttp http;
HCkJsonObject jsonToken;
HCkJsonObject queryParams;
HCkDateTime dt;
BOOL ascending;
BOOL caseSensitive;
const char *appSecret;
const char *path;
HCkStringBuilder sb;
int numParams;
int i;
HCkCrypt2 crypt;
const char *sig;
HCkHttpResponse resp;
HCkJsonObject json;
const char *cipher;
const char *code_str;
const char *id;
const char *name;
const char *region;
const char *seller_type;
int code;
const char *message;
const char *request_id;
int count_i;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
// 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
jsonToken = CkJsonObject_Create();
success = CkJsonObject_LoadFile(jsonToken,"qa_data/tokens/tiktok-shops.json");
if (success != TRUE) {
printf("Failed to load tiktok-shops.json\n");
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
return;
}
queryParams = CkJsonObject_Create();
CkJsonObject_UpdateString(queryParams,"app_key","APP_KEY");
dt = CkDateTime_Create();
CkJsonObject_UpdateString(queryParams,"timestamp",CkDateTime_getAsUnixTimeStr(dt,FALSE));
CkJsonObject_UpdateInt(queryParams,"version",202309);
// Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
ascending = TRUE;
caseSensitive = TRUE;
CkJsonObject_Sort(queryParams,ascending,caseSensitive);
appSecret = "APP_SECRET";
path = "/authorization/202309/shops";
// Build the StringToSign
sb = CkStringBuilder_Create();
CkStringBuilder_Append(sb,appSecret);
CkStringBuilder_Append(sb,path);
numParams = CkJsonObject_getSize(queryParams);
i = 0;
while (i < numParams) {
CkStringBuilder_Append(sb,CkJsonObject_nameAt(queryParams,i));
CkStringBuilder_Append(sb,CkJsonObject_stringAt(queryParams,i));
i = i + 1;
}
CkStringBuilder_Append(sb,appSecret);
crypt = CkCrypt2_Create();
CkCrypt2_putHashAlgorithm(crypt,"SHA256");
CkCrypt2_putMacAlgorithm(crypt,"HMAC");
CkCrypt2_putEncodingMode(crypt,"hex_lower");
CkCrypt2_SetMacKeyString(crypt,appSecret);
sig = CkCrypt2_macStringENC(crypt,CkStringBuilder_getAsString(sb));
CkJsonObject_UpdateString(queryParams,"access_token",CkJsonObject_stringOf(jsonToken,"data.access_token"));
CkJsonObject_UpdateString(queryParams,"sign",sig);
CkHttp_SetRequestHeader(http,"x-tts-access-token",CkJsonObject_stringOf(jsonToken,"data.access_token"));
CkHttp_SetRequestHeader(http,"content-type","application/json");
resp = CkHttpResponse_Create();
success = CkHttp_HttpParams(http,"GET","https://open-api.tiktokglobalshop.com/authorization/202309/shops",queryParams,resp);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
CkJsonObject_Dispose(queryParams);
CkDateTime_Dispose(dt);
CkStringBuilder_Dispose(sb);
CkCrypt2_Dispose(crypt);
CkHttpResponse_Dispose(resp);
return;
}
json = CkJsonObject_Create();
CkHttpResponse_GetBodyJson(resp,json);
printf("%d\n",CkHttpResponse_getStatusCode(resp));
printf("%s\n",CkHttpResponse_bodyStr(resp));
// 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"
// }
code = CkJsonObject_IntOf(json,"code");
message = CkJsonObject_stringOf(json,"message");
request_id = CkJsonObject_stringOf(json,"request_id");
i = 0;
count_i = CkJsonObject_SizeOfArray(json,"data.shops");
while (i < count_i) {
CkJsonObject_putI(json,i);
cipher = CkJsonObject_stringOf(json,"data.shops[i].cipher");
code_str = CkJsonObject_stringOf(json,"data.shops[i].code");
id = CkJsonObject_stringOf(json,"data.shops[i].id");
name = CkJsonObject_stringOf(json,"data.shops[i].name");
region = CkJsonObject_stringOf(json,"data.shops[i].region");
seller_type = CkJsonObject_stringOf(json,"data.shops[i].seller_type");
i = i + 1;
}
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
CkJsonObject_Dispose(queryParams);
CkDateTime_Dispose(dt);
CkStringBuilder_Dispose(sb);
CkCrypt2_Dispose(crypt);
CkHttpResponse_Dispose(resp);
CkJsonObject_Dispose(json);
}