Lianja
Lianja
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 Lianja Downloads
llSuccess = .F.
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
loHttp = createobject("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
loJsonToken = createobject("CkJsonObject")
llSuccess = loJsonToken.LoadFile("qa_data/tokens/tiktok-shops.json")
if (llSuccess <> .T.) then
? "Failed to load tiktok-shops.json"
release loHttp
release loJsonToken
return
endif
// Replace values in all caps with your specific values.
// SHOP_CIPHER and SHOP_ID are returned from this example: Get Authorized Shops
loQueryParams = createobject("CkJsonObject")
loQueryParams.UpdateString("app_key","APP_KEY")
loQueryParams.UpdateString("shop_cipher","SHOP_CIPHER")
loQueryParams.UpdateString("shop_id","SHOP_ID")
loDt = createobject("CkDateTime")
loQueryParams.UpdateString("timestamp",loDt.GetAsUnixTimeStr(.F.))
loQueryParams.UpdateInt("version",202309)
// Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
llAscending = .T.
llCaseSensitive = .T.
loQueryParams.Sort(llAscending,llCaseSensitive)
lcAppSecret = "APP_SECRET"
lcPath = "/product/202309/categories"
// Build the StringToSign
loSb = createobject("CkStringBuilder")
loSb.Append(lcAppSecret)
loSb.Append(lcPath)
lnNumParams = loQueryParams.Size
i = 0
do while i < lnNumParams
loSb.Append(loQueryParams.NameAt(i))
loSb.Append(loQueryParams.StringAt(i))
i = i + 1
enddo
loSb.Append(lcAppSecret)
loCrypt = createobject("CkCrypt2")
loCrypt.HashAlgorithm = "SHA256"
loCrypt.MacAlgorithm = "HMAC"
loCrypt.EncodingMode = "hex_lower"
loCrypt.SetMacKeyString(lcAppSecret)
lcSig = loCrypt.MacStringENC(loSb.GetAsString())
loQueryParams.UpdateString("access_token",loJsonToken.StringOf("data.access_token"))
loQueryParams.UpdateString("sign",lcSig)
loHttp.SetRequestHeader("x-tts-access-token",loJsonToken.StringOf("data.access_token"))
loHttp.SetRequestHeader("content-type","application/json")
loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpParams("GET","https://open-api.tiktokglobalshop.com/product/202309/categories",loQueryParams,loResp)
if (llSuccess = .F.) then
? loHttp.LastErrorText
release loHttp
release loJsonToken
release loQueryParams
release loDt
release loSb
release loCrypt
release loResp
return
endif
loJson = createobject("CkJsonObject")
loResp.GetBodyJson(loJson)
? str(loResp.StatusCode)
lnCode = loJson.IntOf("code")
lcMessage = loJson.StringOf("message")
lcRequest_id = loJson.StringOf("request_id")
i = 0
lnCount_i = loJson.SizeOfArray("data.categories")
do while i < lnCount_i
loJson.I = i
lcId = loJson.StringOf("data.categories[i].id")
llIs_leaf = loJson.BoolOf("data.categories[i].is_leaf")
lcLocal_name = loJson.StringOf("data.categories[i].local_name")
? "local_name: " + lcLocal_name
lcParent_id = loJson.StringOf("data.categories[i].parent_id")
j = 0
lnCount_j = loJson.SizeOfArray("data.categories[i].permission_statuses")
do while j < lnCount_j
loJson.J = j
lcStrVal = loJson.StringOf("data.categories[i].permission_statuses[j]")
j = j + 1
enddo
i = i + 1
enddo
release loHttp
release loJsonToken
release loQueryParams
release loDt
release loSb
release loCrypt
release loResp
release loJson