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
(Tcl) Isabel Connect Create Access Token given Valid Refresh TokenSee more Ibanity ExamplesCreate (refresh) an access token given a valid refresh token. For more information, see https://documentation.ibanity.com/isabel-connect/api#create-access-token
load ./chilkat.dll # This example assumes the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. set http [new_CkHttp] # Implements the following CURL command: # curl -X POST https://api.ibanity.com/isabel-connect/oauth2/token \ # --cert certificate.pem:qwertyuiop1 \ # --key private_key.pem \ # -H "Content-Type: application/x-www-form-urlencoded" \ # -H "Accept: application/vnd.api+json" \ # -H "Ibanity-Idempotency-Key: 94c5586e-e15e-4bae-a1fe-fdbefe1f11d3" \ # -d grant_type=refresh_token \ # -d refresh_token=valid_refresh_token \ # -d client_id=valid_client_id \ # -d client_secret=valid_client_secret # Ibanity provides the certificate + private key in PFX format. This example will use the .pfx instead of the pair of PEM files. # (It is also possible to implement using Chilkat with the PEM files, but PFX is easier.) set cert [new_CkCert] set success [CkCert_LoadPfxFile $cert "qa_data/pfx/my_ibanity_certificate.pfx" "my_pfx_password"] if {$success == 0} then { puts [CkCert_lastErrorText $cert] delete_CkHttp $http delete_CkCert $cert exit } set success [CkHttp_SetSslClientCert $http $cert] if {$success == 0} then { puts [CkHttp_lastErrorText $http] delete_CkHttp $http delete_CkCert $cert exit } set req [new_CkHttpRequest] CkHttpRequest_put_HttpVerb $req "POST" CkHttpRequest_put_Path $req "/isabel-connect/oauth2/token" CkHttpRequest_put_ContentType $req "application/x-www-form-urlencoded" CkHttpRequest_AddParam $req "grant_type" "refresh_token" # Load the previously obtained refresh token. set jsonToken [new_CkJsonObject] set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/isabel_refresh_token.json"] if {$success == 0} then { puts "No existing access token." delete_CkHttp $http delete_CkCert $cert delete_CkHttpRequest $req delete_CkJsonObject $jsonToken exit } CkHttpRequest_AddParam $req "refresh_token" [CkJsonObject_stringOf $jsonToken "refresh_token"] # Note: For sandbox testing, we literally want to use the strings # "valid_client_id", and "valid_client_secret". # For the live app, you would replace these with actual values. CkHttpRequest_AddParam $req "client_id" "valid_client_id" CkHttpRequest_AddParam $req "client_secret" "valid_client_secret" CkHttpRequest_AddHeader $req "Accept" "application/vnd.api+json" set crypt [new_CkCrypt2] set idempotencyKey [CkCrypt2_generateUuid $crypt] puts "Ibanity-Idempotency-Key: $idempotencyKey" CkHttpRequest_AddHeader $req "Ibanity-Idempotency-Key" $idempotencyKey # resp is a CkHttpResponse set resp [CkHttp_PostUrlEncoded $http "https://api.ibanity.com/isabel-connect/oauth2/token" $req] if {[CkHttp_get_LastMethodSuccess $http] == 0} then { puts [CkHttp_lastErrorText $http] delete_CkHttp $http delete_CkCert $cert delete_CkHttpRequest $req delete_CkJsonObject $jsonToken delete_CkCrypt2 $crypt exit } set sbResponseBody [new_CkStringBuilder] CkHttpResponse_GetBodySb $resp $sbResponseBody set jResp [new_CkJsonObject] CkJsonObject_LoadSb $jResp $sbResponseBody CkJsonObject_put_EmitCompact $jResp 0 puts "Response Body:" puts [CkJsonObject_emit $jResp] set respStatusCode [CkHttpResponse_get_StatusCode $resp] puts "Response Status Code = $respStatusCode" if {$respStatusCode >= 400} then { puts "Response Header:" puts [CkHttpResponse_header $resp] puts "Failed." delete_CkHttpResponse $resp delete_CkHttp $http delete_CkCert $cert delete_CkHttpRequest $req delete_CkJsonObject $jsonToken delete_CkCrypt2 $crypt delete_CkStringBuilder $sbResponseBody delete_CkJsonObject $jResp exit } delete_CkHttpResponse $resp # Sample JSON response: # (Sample code for parsing the JSON response is shown below) # Notice that we don't get a new refresh token. The original refresh token is used each time we # want to refresh. However, we get a new access token. This access token is to be used in Isabel API calls # until we need to refresh again. # { # "token_type": "Bearer", # "scope": "cloudconnect", # "expires_in": 1799, # "access_token": "access_token_1603365408" # } # Sample code for parsing the JSON response... # Use the following online tool to generate parsing code from sample JSON: # Generate Parsing Code from JSON set token_type [CkJsonObject_stringOf $jResp "token_type"] set scope [CkJsonObject_stringOf $jResp "scope"] set expires_in [CkJsonObject_IntOf $jResp "expires_in"] set access_token [CkJsonObject_stringOf $jResp "access_token"] # Save this to a file so we can load in other examples to include the access token in the HTTP request. set success [CkJsonObject_WriteFile $jResp "qa_data/tokens/isabel_access_token.json"] delete_CkHttp $http delete_CkCert $cert delete_CkHttpRequest $req delete_CkJsonObject $jsonToken delete_CkCrypt2 $crypt delete_CkStringBuilder $sbResponseBody delete_CkJsonObject $jResp |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.