|  | 
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) Rabobank Refresh OAuth2 Access TokenDemonstrates how to refresh an expired Rabobank OAuth2 access token. (No interactive user interaction is required to refresh an access token.) Note: This example requires Chilkat v11.0.0 or greater. For more information, see https://developer.rabobank.nl/implementoauth2 
 #include <C_CkJsonObject.h> #include <C_CkHttpRequest.h> #include <C_CkHttp.h> #include <C_CkHttpResponse.h> #include <C_CkFileAccess.h> void ChilkatSample(void) { BOOL success; HCkJsonObject json; HCkHttpRequest req; HCkHttp http; HCkHttpResponse resp; HCkFileAccess fac; success = FALSE; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // We previously obtained an access token and saved the JSON to a file using this example: // Get Rabobank OAuth2 Access Token json = CkJsonObject_Create(); success = CkJsonObject_LoadFile(json,"qa_data/tokens/rabobank.json"); if (success != TRUE) { CkJsonObject_Dispose(json); return; } // { // "token_type": "Bearer", // "access_token": "AAIkYTU0ZWM ... sxE0KL0HHWw", // "expires_in": 3600, // "consented_on": 1584641121, // "scope": "ais.balances.read ais.transactions.read-90days ais.transactions.read-history", // "refresh_token": "AAJXXSdN ... Uiblz9ILkxNBlytRGA", // "refresh_token_expires_in": 157784760, // "expires_on": "1584644722" // } // Refresh the access token by sending a POST like this: // // POST /oauth2/token // Headers: // Content-Type: application/x-www-form-urlencoded // Authorization: Basic BASE64(CLIENT_ID + ":" + CLIENT_SECRET) // // Body (x-www-form-urlencoded): // grant_type: refresh_token // refresh_token: REFRESH_TOKEN req = CkHttpRequest_Create(); CkHttpRequest_AddParam(req,"grant_type","refresh_token"); CkHttpRequest_AddParam(req,"refresh_token",CkJsonObject_stringOf(json,"refresh_token")); http = CkHttp_Create(); // Causes the "Authorization: Basic BASE64(CLIENT_ID + ":" + CLIENT_SECRET)" header to be added.. CkHttp_putBasicAuth(http,TRUE); CkHttp_putLogin(http,"YOUR_APP_CLIENT_ID"); CkHttp_putPassword(http,"YOUR_APP_CLIENT_SECRET"); CkHttpRequest_putHttpVerb(req,"POST"); CkHttpRequest_putContentType(req,"application/x-www-form-urlencoded"); resp = CkHttpResponse_Create(); success = CkHttp_HttpReq(http,"https://api-sandbox.rabobank.nl/openapi/sandbox/oauth2/token",req,resp); if (success == FALSE) { printf("%s\n",CkHttp_lastErrorText(http)); CkJsonObject_Dispose(json); CkHttpRequest_Dispose(req); CkHttp_Dispose(http); CkHttpResponse_Dispose(resp); return; } // Load the JSON response. CkJsonObject_Load(json,CkHttpResponse_bodyStr(resp)); CkJsonObject_putEmitCompact(json,FALSE); // Show the JSON response. printf("%s\n",CkJsonObject_emit(json)); printf("Response status code: %d\n",CkHttpResponse_getStatusCode(resp)); // If the response status code is not 200, then it's an error. if (CkHttpResponse_getStatusCode(resp) != 200) { CkJsonObject_Dispose(json); CkHttpRequest_Dispose(req); CkHttp_Dispose(http); CkHttpResponse_Dispose(resp); return; } // Save the refreshed access token JSON to a file for future requests. fac = CkFileAccess_Create(); CkFileAccess_WriteEntireTextFile(fac,"qa_data/tokens/rabobank.json",CkJsonObject_emit(json),"utf-8",FALSE); CkJsonObject_Dispose(json); CkHttpRequest_Dispose(req); CkHttp_Dispose(http); CkHttpResponse_Dispose(resp); CkFileAccess_Dispose(fac); } | ||||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.