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
(DataFlex) Get Access Token using a Pre-Created JSON Web TokenDemonstrates how to get an access token using a pre-created JSON Web Token (JWT). For more information, see https://developer.abnamro.com/get-started#headingFive
Use ChilkatAx-win32.pkg Procedure Test Variant vPrivkey Handle hoPrivkey Boolean iSuccess Handle hoJwt Handle hoJsonHeader Handle hoJsonPayload Integer iCurDateTime String sJwtStr Handle hoHttp Variant vReq Handle hoReq Variant vResp Handle hoResp Handle hoJson String sTemp1 String sTemp2 Integer iTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // We're going to duplicate this CURL statement: // curl -X POST https://api-sandbox.abnamro.com/v1/oauth/token \ // -H "Content-Type: application/x-www-form-urlencoded" \ // -H "API-Key: xxxxxx" \ // -d 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&grant_type=client_credentials&client_assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ4eHh4eHgiLCJleHAiOiIxNDk5OTQ3NjY4IiwiaXNzIjoibWUiLCJhdWQiOiJodHRwczovL2F1dGgtc2FuZGJveC5hYm5hbXJvLmNvbS9vYXV0aC90b2tlbiJ9.jGwHKG_YjgKpR8NPpaLu6nJ97obeP2vcxg6fOWBKdJ0&scope=tikkie' // Load our pre-creaed private key PEM file. // Note: Please share your public key along with your app name and developer email id at api.support@nl.abnamro.com. // Token generation will not work unless public key is associated with your app. Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivkey If (Not(IsComObjectCreated(hoPrivkey))) Begin Send CreateComObject of hoPrivkey End Get ComLoadPemFile Of hoPrivkey "qa_data/pem/abnAmroPrivateKey.pem" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoPrivkey To sTemp1 Showln sTemp1 Procedure_Return End // Create the JWT. Get Create (RefClass(cComChilkatJwt)) To hoJwt If (Not(IsComObjectCreated(hoJwt))) Begin Send CreateComObject of hoJwt End // Create the header: // { // "typ": "JWT", // "alg": "RS256" // } Get Create (RefClass(cComChilkatJsonObject)) To hoJsonHeader If (Not(IsComObjectCreated(hoJsonHeader))) Begin Send CreateComObject of hoJsonHeader End Get ComUpdateString Of hoJsonHeader "typ" "JWT" To iSuccess Get ComUpdateString Of hoJsonHeader "alg" "RS256" To iSuccess // Create the payload: // { // "nbf": 1499947668, // "exp": 1499948668, // "iss": "me", // "sub": "anApiKey", // "aud": "https://auth-sandbox.abnamro.com/oauth/token" // } Get Create (RefClass(cComChilkatJsonObject)) To hoJsonPayload If (Not(IsComObjectCreated(hoJsonPayload))) Begin Send CreateComObject of hoJsonPayload End Get ComGenNumericDate Of hoJwt 0 To iCurDateTime // Set the "not process before" timestamp to now. Get ComAddIntAt Of hoJsonPayload -1 "nbf" iCurDateTime To iSuccess // Set the timestamp defining an expiration time (end time) for the token // to be now + 1 hour (3600 seconds) Get ComAddIntAt Of hoJsonPayload -1 "exp" (iCurDateTime + 3600) To iSuccess Get ComUpdateString Of hoJsonPayload "iss" "me" To iSuccess Get ComUpdateString Of hoJsonPayload "sub" "anApiKey" To iSuccess Get ComUpdateString Of hoJsonPayload "aud" "https://auth-sandbox.abnamro.com/oauth/token" To iSuccess // Produce the smallest possible JWT: Set ComAutoCompact Of hoJwt To True Get ComEmit Of hoJsonHeader To sTemp1 Get ComEmit Of hoJsonPayload To sTemp2 Get pvComObject of hoPrivkey to vPrivkey Get ComCreateJwtPk Of hoJwt sTemp1 sTemp2 vPrivkey To sJwtStr Get ComLastMethodSuccess Of hoJwt To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoJwt To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End Get Create (RefClass(cComChilkatHttpRequest)) To hoReq If (Not(IsComObjectCreated(hoReq))) Begin Send CreateComObject of hoReq End Send ComAddParam To hoReq "client_assertion_type" "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" Send ComAddParam To hoReq "grant_type" "client_credentials" Send ComAddParam To hoReq "client_assertion" sJwtStr Send ComAddParam To hoReq "scope" "tikkie" Get pvComObject of hoReq to vReq Get ComPostUrlEncoded Of hoHttp "https://api-sandbox.abnamro.com/v1/oauth/token" vReq To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End Get ComStatusCode Of hoResp To iTemp1 If (iTemp1 <> 200) Begin Get ComBodyStr Of hoResp To sTemp1 Showln sTemp1 Send Destroy of hoResp Procedure_Return End // Get the JSON result: // { // "access_token": "{your access token}", // "expires_in": "{duration of validity in seconds}", // "scope": "{scope(s) for which the access token is valid}", // "token_type": "{it is always Bearer}" // } Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComBodyStr Of hoResp To sTemp1 Get ComLoad Of hoJson sTemp1 To iSuccess Get ComStringOf Of hoJson "access_token" To sTemp1 Showln "access_token: " sTemp1 Get ComStringOf Of hoJson "token_type" To sTemp1 Showln "token_type: " sTemp1 Get ComStringOf Of hoJson "expires_in" To sTemp1 Showln "expires_in: " sTemp1 Get ComStringOf Of hoJson "scope" To sTemp1 Showln "scope: " sTemp1 Send Destroy of hoResp End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.