Sample code for 30+ languages & platforms
Go

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

Go
    success := false

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

    http := chilkat.NewHttp()

    // 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 := chilkat.NewJsonObject()
    success = jsonToken.LoadFile("qa_data/tokens/tiktok-shops.json")
    if success != true {
        fmt.Println("Failed to load tiktok-shops.json")
        http.DisposeHttp()
        jsonToken.DisposeJsonObject()
        return
    }

    // Replace values in all caps with your specific values.
    // SHOP_CIPHER and SHOP_ID are returned from this example: Get Authorized Shops
    queryParams := chilkat.NewJsonObject()
    queryParams.UpdateString("app_key","APP_KEY")
    queryParams.UpdateString("shop_cipher","SHOP_CIPHER")
    queryParams.UpdateString("shop_id","SHOP_ID")
    dt := chilkat.NewCkDateTime()
    queryParams.UpdateString("timestamp",*dt.GetAsUnixTimeStr(false))
    queryParams.UpdateInt("version",202309)

    // Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
    ascending := true
    caseSensitive := true
    queryParams.Sort(ascending,caseSensitive)

    appSecret := "APP_SECRET"
    path := "/product/202309/categories"

    // Build the StringToSign
    sb := chilkat.NewStringBuilder()
    sb.Append(appSecret)
    sb.Append(path)
    numParams := queryParams.Size()
    i := 0
    for i < numParams {
        sb.Append(*queryParams.NameAt(i))
        sb.Append(*queryParams.StringAt(i))
        i = i + 1
    }

    sb.Append(appSecret)

    crypt := chilkat.NewCrypt2()
    crypt.SetHashAlgorithm("SHA256")
    crypt.SetMacAlgorithm("HMAC")
    crypt.SetEncodingMode("hex_lower")
    crypt.SetMacKeyString(appSecret)

    sig := crypt.MacStringENC(*sb.GetAsString())

    queryParams.UpdateString("access_token",*jsonToken.StringOf("data.access_token"))
    queryParams.UpdateString("sign",*sig)

    http.SetRequestHeader("x-tts-access-token",*jsonToken.StringOf("data.access_token"))
    http.SetRequestHeader("content-type","application/json")

    resp := chilkat.NewHttpResponse()
    success = http.HttpParams("GET","https://open-api.tiktokglobalshop.com/product/202309/categories",queryParams,resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        jsonToken.DisposeJsonObject()
        queryParams.DisposeJsonObject()
        dt.DisposeCkDateTime()
        sb.DisposeStringBuilder()
        crypt.DisposeCrypt2()
        resp.DisposeHttpResponse()
        return
    }

    json := chilkat.NewJsonObject()
    resp.GetBodyJson(json)

    fmt.Println(resp.StatusCode())

    var id *string = new(string)
    var is_leaf bool
    var local_name *string = new(string)
parent_    var id *string = new(string)
    var j int
    var count_j int
    var strVal *string = new(string)

    code := json.IntOf("code")
    message := json.StringOf("message")
    request_id := json.StringOf("request_id")
    i = 0
    count_i := json.SizeOfArray("data.categories")
    for i < count_i {
        json.SetI(i)
        id = json.StringOf("data.categories[i].id")
        is_leaf = json.BoolOf("data.categories[i].is_leaf")
        local_name = json.StringOf("data.categories[i].local_name")
        fmt.Println("local_name: ", *local_name)
        parent_id = json.StringOf("data.categories[i].parent_id")
        j = 0
        count_j = json.SizeOfArray("data.categories[i].permission_statuses")
        for j < count_j {
            json.SetJ(j)
            strVal = json.StringOf("data.categories[i].permission_statuses[j]")
            j = j + 1
        }

        i = i + 1
    }


    http.DisposeHttp()
    jsonToken.DisposeJsonObject()
    queryParams.DisposeJsonObject()
    dt.DisposeCkDateTime()
    sb.DisposeStringBuilder()
    crypt.DisposeCrypt2()
    resp.DisposeHttpResponse()
    json.DisposeJsonObject()