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
(Delphi DLL) 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.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, CkDateTime, HttpResponse, StringBuilder, JsonObject, Crypt2; ... procedure TForm1.Button1Click(Sender: TObject); var http: HCkHttp; jsonToken: HCkJsonObject; success: Boolean; queryParams: HCkJsonObject; dt: HCkDateTime; ascending: Boolean; caseSensitive: Boolean; appSecret: PWideChar; path: PWideChar; sb: HCkStringBuilder; numParams: Integer; i: Integer; crypt: HCkCrypt2; sig: PWideChar; resp: HCkHttpResponse; json: HCkJsonObject; id: PWideChar; is_leaf: Boolean; local_name: PWideChar; parent_id: PWideChar; j: Integer; count_j: Integer; strVal: PWideChar; code: Integer; message: PWideChar; request_id: PWideChar; count_i: Integer; begin // 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) then begin Memo1.Lines.Add('Failed to load tiktok-shops.json'); Exit; end; // 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 do begin CkStringBuilder_Append(sb,CkJsonObject__nameAt(queryParams,i)); CkStringBuilder_Append(sb,CkJsonObject__stringAt(queryParams,i)); i := i + 1; end; 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) then begin Memo1.Lines.Add(CkHttp__lastErrorText(http)); Exit; end; json := CkJsonObject_Create(); CkHttpResponse_GetBodyJson(resp,json); Memo1.Lines.Add(IntToStr(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 do begin 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'); Memo1.Lines.Add('local_name: ' + 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 do begin CkJsonObject_putJ(json,j); strVal := CkJsonObject__stringOf(json,'data.categories[i].permission_statuses[j]'); j := j + 1; end; i := i + 1; end; CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkJsonObject_Dispose(queryParams); CkDateTime_Dispose(dt); CkStringBuilder_Dispose(sb); CkCrypt2_Dispose(crypt); CkJsonObject_Dispose(json); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.