Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(C) TikTok Shop Get CategoriesSee more TikTok Shop ExamplesAn example showing how to use a TikTok Shops access token in an API call. IMPORTANT: This example requires a pre-release for the next version of Chilkat after the current v9.5.0.99 release. Contact info@chilkatsoft.com if you wish to get a pre-release. However, pre-releases of .NET Core (hosted on NuGet) and Node.js will not be possible.
#include <C_CkHttp.h> #include <C_CkJsonObject.h> #include <C_CkDateTime.h> #include <C_CkStringBuilder.h> #include <C_CkCrypt2.h> #include <C_CkHttpResponse.h> void ChilkatSample(void) { HCkHttp http; HCkJsonObject jsonToken; BOOL success; HCkJsonObject queryParams; HCkDateTime dt; BOOL ascending; BOOL caseSensitive; const char *appSecret; const char *path; HCkStringBuilder sb; int numParams; int i; HCkCrypt2 crypt; const char *sig; HCkHttpResponse resp; HCkJsonObject json; const char *id; BOOL is_leaf; const char *local_name; const char *parent_id; int j; int count_j; const char *strVal; int code; const char *message; const char *request_id; int count_i; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http = CkHttp_Create(); // 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 = CkJsonObject_Create(); success = CkJsonObject_LoadFile(jsonToken,"qa_data/tokens/tiktok-shops.json"); if (success != TRUE) { printf("Failed to load tiktok-shops.json\n"); CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); return; } // Replace values in all caps with your specific values. // SHOP_CIPHER and SHOP_ID are returned from this example: Get Authorized Shops queryParams = CkJsonObject_Create(); CkJsonObject_UpdateString(queryParams,"app_key","APP_KEY"); CkJsonObject_UpdateString(queryParams,"shop_cipher","SHOP_CIPHER"); CkJsonObject_UpdateString(queryParams,"shop_id","SHOP_ID"); dt = CkDateTime_Create(); CkJsonObject_UpdateString(queryParams,"timestamp",CkDateTime_getAsUnixTimeStr(dt,FALSE)); CkJsonObject_UpdateInt(queryParams,"version",202309); // Sort the JSON members by member name, in ascending order (A-Z), case sensitive.. // Note: The Sort method is added in Chilkat v9.5.0.100 ascending = TRUE; caseSensitive = TRUE; CkJsonObject_Sort(queryParams,ascending,caseSensitive); appSecret = "APP_SECRET"; path = "/product/202309/categories"; // Build the StringToSign sb = CkStringBuilder_Create(); CkStringBuilder_Append(sb,appSecret); CkStringBuilder_Append(sb,path); numParams = CkJsonObject_getSize(queryParams); i = 0; while (i < numParams) { CkStringBuilder_Append(sb,CkJsonObject_nameAt(queryParams,i)); CkStringBuilder_Append(sb,CkJsonObject_stringAt(queryParams,i)); i = i + 1; } CkStringBuilder_Append(sb,appSecret); crypt = CkCrypt2_Create(); CkCrypt2_putHashAlgorithm(crypt,"SHA256"); CkCrypt2_putMacAlgorithm(crypt,"HMAC"); CkCrypt2_putEncodingMode(crypt,"hex_lower"); CkCrypt2_SetMacKeyString(crypt,appSecret); 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"); resp = CkHttp_QuickRequestParams(http,"GET","https://open-api.tiktokglobalshop.com/product/202309/categories",queryParams); if (CkHttp_getLastMethodSuccess(http) == FALSE) { printf("%s\n",CkHttp_lastErrorText(http)); CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkJsonObject_Dispose(queryParams); CkDateTime_Dispose(dt); CkStringBuilder_Dispose(sb); CkCrypt2_Dispose(crypt); return; } json = CkJsonObject_Create(); CkHttpResponse_GetBodyJson(resp,json); printf("%d\n",CkHttpResponse_getStatusCode(resp)); CkHttpResponse_Dispose(resp); code = CkJsonObject_IntOf(json,"code"); message = CkJsonObject_stringOf(json,"message"); request_id = CkJsonObject_stringOf(json,"request_id"); i = 0; count_i = CkJsonObject_SizeOfArray(json,"data.categories"); while (i < count_i) { CkJsonObject_putI(json,i); id = CkJsonObject_stringOf(json,"data.categories[i].id"); is_leaf = CkJsonObject_BoolOf(json,"data.categories[i].is_leaf"); local_name = CkJsonObject_stringOf(json,"data.categories[i].local_name"); printf("local_name: %s\n",local_name); parent_id = CkJsonObject_stringOf(json,"data.categories[i].parent_id"); j = 0; count_j = CkJsonObject_SizeOfArray(json,"data.categories[i].permission_statuses"); while (j < count_j) { CkJsonObject_putJ(json,j); strVal = CkJsonObject_stringOf(json,"data.categories[i].permission_statuses[j]"); j = j + 1; } i = i + 1; } CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkJsonObject_Dispose(queryParams); CkDateTime_Dispose(dt); CkStringBuilder_Dispose(sb); CkCrypt2_Dispose(crypt); CkJsonObject_Dispose(json); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.