Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loHttp
LOCAL loJsonToken
LOCAL loQueryParams
LOCAL loDt
LOCAL lnAscending
LOCAL lnCaseSensitive
LOCAL lcAppSecret
LOCAL lcPath
LOCAL loSb
LOCAL lnNumParams
LOCAL i
LOCAL loCrypt
LOCAL lcSig
LOCAL loResp
LOCAL loJson
LOCAL lcId
LOCAL lnIs_leaf
LOCAL lcLocal_name
LOCAL lcParent_id
LOCAL j
LOCAL lnCount_j
LOCAL lcStrVal
LOCAL lnCode
LOCAL lcMessage
LOCAL lcRequest_id
LOCAL lnCount_i
lnSuccess = 0
* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loHttp = CreateObject('Chilkat.Http')
* 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('Chilkat.JsonObject')
lnSuccess = loJsonToken.LoadFile("qa_data/tokens/tiktok-shops.json")
IF (lnSuccess <> 1) THEN
? "Failed to load tiktok-shops.json"
RELEASE loHttp
RELEASE loJsonToken
CANCEL
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('Chilkat.JsonObject')
loQueryParams.UpdateString("app_key","APP_KEY")
loQueryParams.UpdateString("shop_cipher","SHOP_CIPHER")
loQueryParams.UpdateString("shop_id","SHOP_ID")
loDt = CreateObject('Chilkat.CkDateTime')
loQueryParams.UpdateString("timestamp",loDt.GetAsUnixTimeStr(0))
loQueryParams.UpdateInt("version",202309)
* Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
lnAscending = 1
lnCaseSensitive = 1
loQueryParams.Sort(lnAscending,lnCaseSensitive)
lcAppSecret = "APP_SECRET"
lcPath = "/product/202309/categories"
* Build the StringToSign
loSb = CreateObject('Chilkat.StringBuilder')
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('Chilkat.Crypt2')
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('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpParams("GET","https://open-api.tiktokglobalshop.com/product/202309/categories",loQueryParams,loResp)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
RELEASE loJsonToken
RELEASE loQueryParams
RELEASE loDt
RELEASE loSb
RELEASE loCrypt
RELEASE loResp
CANCEL
ENDIF
loJson = CreateObject('Chilkat.JsonObject')
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")
lnIs_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