Visual FoxPro
Visual FoxPro
Isabel Connect Create Access Token given Valid Refresh Token
See more Ibanity Examples
Create (refresh) an access token given a valid refresh token.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loHttp
LOCAL loCert
LOCAL loReq
LOCAL loJsonToken
LOCAL loCrypt
LOCAL lcIdempotencyKey
LOCAL loResp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcToken_type
LOCAL lcScope
LOCAL lnExpires_in
LOCAL lcAccess_token
lnSuccess = 0
* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loHttp = CreateObject('Chilkat.Http')
* 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.)
loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCert.LoadPfxFile("qa_data/pfx/my_ibanity_certificate.pfx","my_pfx_password")
IF (lnSuccess = 0) THEN
? loCert.LastErrorText
RELEASE loHttp
RELEASE loCert
CANCEL
ENDIF
lnSuccess = loHttp.SetSslClientCert(loCert)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
RELEASE loCert
CANCEL
ENDIF
loReq = CreateObject('Chilkat.HttpRequest')
loReq.HttpVerb = "POST"
loReq.Path = "/isabel-connect/oauth2/token"
loReq.ContentType = "application/x-www-form-urlencoded"
loReq.AddParam("grant_type","refresh_token")
* Load the previously obtained refresh token.
loJsonToken = CreateObject('Chilkat.JsonObject')
lnSuccess = loJsonToken.LoadFile("qa_data/tokens/isabel_refresh_token.json")
IF (lnSuccess = 0) THEN
? "No existing access token."
RELEASE loHttp
RELEASE loCert
RELEASE loReq
RELEASE loJsonToken
CANCEL
ENDIF
loReq.AddParam("refresh_token",loJsonToken.StringOf("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.
loReq.AddParam("client_id","valid_client_id")
loReq.AddParam("client_secret","valid_client_secret")
loReq.AddHeader("Accept","application/vnd.api+json")
loCrypt = CreateObject('Chilkat.Crypt2')
lcIdempotencyKey = loCrypt.GenerateUuid()
? "Ibanity-Idempotency-Key: " + lcIdempotencyKey
loReq.AddHeader("Ibanity-Idempotency-Key",lcIdempotencyKey)
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpReq("https://api.ibanity.com/isabel-connect/oauth2/token",loReq,loResp)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
RELEASE loCert
RELEASE loReq
RELEASE loJsonToken
RELEASE loCrypt
RELEASE loResp
CANCEL
ENDIF
loSbResponseBody = CreateObject('Chilkat.StringBuilder')
loResp.GetBodySb(loSbResponseBody)
loJResp = CreateObject('Chilkat.JsonObject')
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = 0
? "Response Body:"
? loJResp.Emit()
lnRespStatusCode = loResp.StatusCode
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode >= 400) THEN
? "Response Header:"
? loResp.Header
? "Failed."
RELEASE loHttp
RELEASE loCert
RELEASE loReq
RELEASE loJsonToken
RELEASE loCrypt
RELEASE loResp
RELEASE loSbResponseBody
RELEASE loJResp
CANCEL
ENDIF
* 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
lcToken_type = loJResp.StringOf("token_type")
lcScope = loJResp.StringOf("scope")
lnExpires_in = loJResp.IntOf("expires_in")
lcAccess_token = loJResp.StringOf("access_token")
* Save this to a file so we can load in other examples to include the access token in the HTTP request.
lnSuccess = loJResp.WriteFile("qa_data/tokens/isabel_access_token.json")
RELEASE loHttp
RELEASE loCert
RELEASE loReq
RELEASE loJsonToken
RELEASE loCrypt
RELEASE loResp
RELEASE loSbResponseBody
RELEASE loJResp