|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (C) Isabel Connect Create First Access Token and Refresh TokenSee more Ibanity ExamplesCreates your first access token and refresh token. Once created, the refresh token can be used to get a new access token after it expires, or before it expires.Note: This example requires Chilkat v11.0.0 or greater. For more information, see https://documentation.ibanity.com/isabel-connect/api#create-refresh-token 
 #include <C_CkHttp.h> #include <C_CkCert.h> #include <C_CkHttpRequest.h> #include <C_CkCrypt2.h> #include <C_CkHttpResponse.h> #include <C_CkStringBuilder.h> #include <C_CkJsonObject.h> void ChilkatSample(void) { BOOL success; HCkHttp http; HCkCert cert; HCkHttpRequest req; HCkCrypt2 crypt; const char *idempotencyKey; HCkHttpResponse resp; HCkStringBuilder sbResponseBody; HCkJsonObject jResp; int respStatusCode; const char *token_type; const char *scope; const char *refresh_token; int expires_in; const char *access_token; success = FALSE; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http = CkHttp_Create(); // 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: af621a8f-f74b-41a2-b011-336997633df4" \ // -d grant_type=authorization_code \ // -d code=valid_authorization_code \ // -d client_id=valid_client_id \ // -d client_secret=valid_client_secret \ // -d redirect_uri=https://fake-tpp.com // 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.) cert = CkCert_Create(); success = CkCert_LoadPfxFile(cert,"qa_data/pfx/my_ibanity_certificate.pfx","my_pfx_password"); if (success == FALSE) { printf("%s\n",CkCert_lastErrorText(cert)); CkHttp_Dispose(http); CkCert_Dispose(cert); return; } success = CkHttp_SetSslClientCert(http,cert); if (success == FALSE) { printf("%s\n",CkHttp_lastErrorText(http)); CkHttp_Dispose(http); CkCert_Dispose(cert); return; } req = CkHttpRequest_Create(); CkHttpRequest_putHttpVerb(req,"POST"); CkHttpRequest_putPath(req,"/isabel-connect/oauth2/token"); CkHttpRequest_putContentType(req,"application/x-www-form-urlencoded"); CkHttpRequest_AddParam(req,"grant_type","authorization_code"); // Note: For sandbox testing, we literally want to use the strings // "valid_authorization_code", "valid_client_id", and "valid_client_secret". // For the live app, you would replace these with actual values. CkHttpRequest_AddParam(req,"code","valid_authorization_code"); CkHttpRequest_AddParam(req,"client_id","valid_client_id"); CkHttpRequest_AddParam(req,"client_secret","valid_client_secret"); CkHttpRequest_AddParam(req,"redirect_uri","https://fake-tpp.com"); CkHttpRequest_AddHeader(req,"Accept","application/vnd.api+json"); crypt = CkCrypt2_Create(); idempotencyKey = CkCrypt2_generateUuid(crypt); printf("Ibanity-Idempotency-Key: %s\n",idempotencyKey); CkHttpRequest_AddHeader(req,"Ibanity-Idempotency-Key",idempotencyKey); resp = CkHttpResponse_Create(); success = CkHttp_HttpReq(http,"https://api.ibanity.com/isabel-connect/oauth2/token",req,resp); if (success == FALSE) { printf("%s\n",CkHttp_lastErrorText(http)); CkHttp_Dispose(http); CkCert_Dispose(cert); CkHttpRequest_Dispose(req); CkCrypt2_Dispose(crypt); CkHttpResponse_Dispose(resp); return; } sbResponseBody = CkStringBuilder_Create(); CkHttpResponse_GetBodySb(resp,sbResponseBody); jResp = CkJsonObject_Create(); CkJsonObject_LoadSb(jResp,sbResponseBody); CkJsonObject_putEmitCompact(jResp,FALSE); printf("Response Body:\n"); printf("%s\n",CkJsonObject_emit(jResp)); respStatusCode = CkHttpResponse_getStatusCode(resp); printf("Response Status Code = %d\n",respStatusCode); if (respStatusCode >= 400) { printf("Response Header:\n"); printf("%s\n",CkHttpResponse_header(resp)); printf("Failed.\n"); CkHttp_Dispose(http); CkCert_Dispose(cert); CkHttpRequest_Dispose(req); CkCrypt2_Dispose(crypt); CkHttpResponse_Dispose(resp); CkStringBuilder_Dispose(sbResponseBody); CkJsonObject_Dispose(jResp); return; } // Sample JSON response: // (Sample code for parsing the JSON response is shown below) // { // "token_type": "Bearer", // "scope": "cloudconnect", // "refresh_token": "valid_refresh_token", // "expires_in": 1799, // "access_token": "access_token_1617371230" // } // Sample code for parsing the JSON response... // Use the following online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON token_type = CkJsonObject_stringOf(jResp,"token_type"); scope = CkJsonObject_stringOf(jResp,"scope"); refresh_token = CkJsonObject_stringOf(jResp,"refresh_token"); expires_in = CkJsonObject_IntOf(jResp,"expires_in"); access_token = CkJsonObject_stringOf(jResp,"access_token"); // Save to a file for future use in refreshing the access token. // The refresh token is the same each time we refresh to get a new access token. success = CkJsonObject_WriteFile(jResp,"qa_data/tokens/isabel_refresh_token.json"); // Also save to a file to be used as the current access token. success = CkJsonObject_WriteFile(jResp,"qa_data/tokens/isabel_access_token.json"); CkHttp_Dispose(http); CkCert_Dispose(cert); CkHttpRequest_Dispose(req); CkCrypt2_Dispose(crypt); CkHttpResponse_Dispose(resp); CkStringBuilder_Dispose(sbResponseBody); CkJsonObject_Dispose(jResp); } | ||||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.