Sample code for 30+ languages & platforms
Swift Requires Chilkat v11.0.0+

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

Swift

func chilkatTest() {
    var success: Bool = false

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

    let http = CkoHttp()!

    //  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
    let jsonToken = CkoJsonObject()!
    success = jsonToken.loadFile(path: "qa_data/tokens/tiktok-shops.json")
    if success != true {
        print("Failed to load tiktok-shops.json")
        return
    }

    let queryParams = CkoJsonObject()!
    queryParams.updateString(jsonPath: "app_key", value: "APP_KEY")
    let dt = CkoDateTime()!
    queryParams.updateString(jsonPath: "timestamp", value: dt.get(asUnixTimeStr: false))
    queryParams.updateInt(jsonPath: "version", value: 202309)

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

    var appSecret: String? = "APP_SECRET"
    var path: String? = "/authorization/202309/shops"

    //  Build the StringToSign
    let sb = CkoStringBuilder()!
    sb.append(value: appSecret)
    sb.append(value: path)
    var numParams: Int = queryParams.size.intValue
    var i: Int = 0
    while i < numParams {
        sb.append(value: queryParams.name(at: i))
        sb.append(value: queryParams.string(at: i))
        i = i + 1
    }

    sb.append(value: appSecret)

    let crypt = CkoCrypt2()!
    crypt.hashAlgorithm = "SHA256"
    crypt.macAlgorithm = "HMAC"
    crypt.encodingMode = "hex_lower"
    crypt.setMacKeyString(key: appSecret)

    var sig: String? = crypt.macStringENC(inText: sb.getAsString())

    queryParams.updateString(jsonPath: "access_token", value: jsonToken.string(of: "data.access_token"))
    queryParams.updateString(jsonPath: "sign", value: sig)

    http.setRequestHeader(name: "x-tts-access-token", value: jsonToken.string(of: "data.access_token"))
    http.setRequestHeader(name: "content-type", value: "application/json")

    let resp = CkoHttpResponse()!
    success = http.httpParams(verb: "GET", url: "https://open-api.tiktokglobalshop.com/authorization/202309/shops", json: queryParams, response: resp)
    if success == false {
        print("\(http.lastErrorText!)")
        return
    }

    let json = CkoJsonObject()!
    resp.getBodyJson(json: json)

    print("\(resp.statusCode.intValue)")
    print("\(resp.bodyStr!)")

    //  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"
    //  }

    var cipher: String?
    var code_str: String?
    var id: String?
    var name: String?
    var region: String?
    var seller_type: String?

    var code: Int = json.int(of: "code").intValue
    var message: String? = json.string(of: "message")
    var request_id: String? = json.string(of: "request_id")
    i = 0
    var count_i: Int = json.size(ofArray: "data.shops").intValue
    while i < count_i {
        json.i = i
        cipher = json.string(of: "data.shops[i].cipher")
        code_str = json.string(of: "data.shops[i].code")
        id = json.string(of: "data.shops[i].id")
        name = json.string(of: "data.shops[i].name")
        region = json.string(of: "data.shops[i].region")
        seller_type = json.string(of: "data.shops[i].seller_type")
        i = i + 1
    }


}