Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set http [new_CkHttp]

# 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
set jsonToken [new_CkJsonObject]

set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/tiktok-shops.json"]
if {$success != 1} then {
    puts "Failed to load tiktok-shops.json"
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    exit
}

set queryParams [new_CkJsonObject]

CkJsonObject_UpdateString $queryParams "app_key" "APP_KEY"
set dt [new_CkDateTime]

CkJsonObject_UpdateString $queryParams "timestamp" [CkDateTime_getAsUnixTimeStr $dt 0]
CkJsonObject_UpdateInt $queryParams "version" 202309

# Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
set ascending 1
set caseSensitive 1
CkJsonObject_Sort $queryParams $ascending $caseSensitive

set appSecret "APP_SECRET"
set path "/authorization/202309/shops"

# Build the StringToSign
set sb [new_CkStringBuilder]

CkStringBuilder_Append $sb $appSecret
CkStringBuilder_Append $sb $path
set numParams [CkJsonObject_get_Size $queryParams]
set i 0
while {$i < $numParams} {
    CkStringBuilder_Append $sb [CkJsonObject_nameAt $queryParams $i]
    CkStringBuilder_Append $sb [CkJsonObject_stringAt $queryParams $i]
    set i [expr $i + 1]
}
CkStringBuilder_Append $sb $appSecret

set crypt [new_CkCrypt2]

CkCrypt2_put_HashAlgorithm $crypt "SHA256"
CkCrypt2_put_MacAlgorithm $crypt "HMAC"
CkCrypt2_put_EncodingMode $crypt "hex_lower"
CkCrypt2_SetMacKeyString $crypt $appSecret

set 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"

set resp [new_CkHttpResponse]

set success [CkHttp_HttpParams $http "GET" "https://open-api.tiktokglobalshop.com/authorization/202309/shops" $queryParams $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    delete_CkJsonObject $queryParams
    delete_CkDateTime $dt
    delete_CkStringBuilder $sb
    delete_CkCrypt2 $crypt
    delete_CkHttpResponse $resp
    exit
}

set json [new_CkJsonObject]

CkHttpResponse_GetBodyJson $resp $json

puts [CkHttpResponse_get_StatusCode $resp]
puts [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"
# }

set code [CkJsonObject_IntOf $json "code"]
set message [CkJsonObject_stringOf $json "message"]
set request_id [CkJsonObject_stringOf $json "request_id"]
set i 0
set count_i [CkJsonObject_SizeOfArray $json "data.shops"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    set cipher [CkJsonObject_stringOf $json "data.shops[i].cipher"]
    set code_str [CkJsonObject_stringOf $json "data.shops[i].code"]
    set id [CkJsonObject_stringOf $json "data.shops[i].id"]
    set name [CkJsonObject_stringOf $json "data.shops[i].name"]
    set region [CkJsonObject_stringOf $json "data.shops[i].region"]
    set seller_type [CkJsonObject_stringOf $json "data.shops[i].seller_type"]
    set i [expr $i + 1]
}

delete_CkHttp $http
delete_CkJsonObject $jsonToken
delete_CkJsonObject $queryParams
delete_CkDateTime $dt
delete_CkStringBuilder $sb
delete_CkCrypt2 $crypt
delete_CkHttpResponse $resp
delete_CkJsonObject $json