Tcl
Tcl
ABN AMRO OAuth2 Client Credentials Authentication
See more ABN AMRO Examples
Demonstrates how to obtain an access token for an ABN AMRO online API using OAuth2 with the Client Credentials flow.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# This example sends the following CURL request:
# curl -X POST -k https://auth-sandbox.connect.abnamro.com:8443/as/token.oauth2 \
# -v \
# --cert TPPCertificate.crt \
# --key TPPprivateKey.key \
# -H 'Cache-Control: no-cache' \
# -H 'Content-Type: application/x-www-form-urlencoded' \
# -d 'grant_type=client_credentials&client_id=TPP_test&scope=psd2:payment:sepa:write psd2:payment:sepa:read'
set cert [new_CkCert]
set success [CkCert_LoadFromFile $cert "qa_data/certs/TPPCertificate.cer"]
if {$success == 0} then {
puts [CkCert_lastErrorText $cert]
delete_CkCert $cert
exit
}
set bdKey [new_CkBinData]
set success [CkBinData_LoadFile $bdKey "qa_data/certs/TPPprivateKey.key"]
set privKey [new_CkPrivateKey]
set success [CkPrivateKey_LoadAnyFormat $privKey $bdKey "passwordIfNeeded"]
if {$success == 0} then {
puts [CkPrivateKey_lastErrorText $privKey]
delete_CkCert $cert
delete_CkBinData $bdKey
delete_CkPrivateKey $privKey
exit
}
set success [CkCert_SetPrivateKey $cert $privKey]
if {$success == 0} then {
puts [CkCert_lastErrorText $cert]
delete_CkCert $cert
delete_CkBinData $bdKey
delete_CkPrivateKey $privKey
exit
}
set http [new_CkHttp]
set success [CkHttp_SetSslClientCert $http $cert]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkCert $cert
delete_CkBinData $bdKey
delete_CkPrivateKey $privKey
delete_CkHttp $http
exit
}
set req [new_CkHttpRequest]
CkHttpRequest_AddParam $req "grant_type" "client_credentials"
CkHttpRequest_AddParam $req "client_id" "TPP_test"
CkHttpRequest_AddParam $req "scope" "psd2:payment:sepa:write psd2:payment:sepa:read"
CkHttpRequest_put_HttpVerb $req "POST"
CkHttpRequest_put_ContentType $req "application/x-www-form-urlencoded"
set resp [new_CkHttpResponse]
set success [CkHttp_HttpReq $http "https://auth-sandbox.connect.abnamro.com:8443/as/token.oauth2" $req $resp]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkCert $cert
delete_CkBinData $bdKey
delete_CkPrivateKey $privKey
delete_CkHttp $http
delete_CkHttpRequest $req
delete_CkHttpResponse $resp
exit
}
if {[CkHttpResponse_get_StatusCode $resp] != 200} then {
puts [CkHttpResponse_bodyStr $resp]
delete_CkCert $cert
delete_CkBinData $bdKey
delete_CkPrivateKey $privKey
delete_CkHttp $http
delete_CkHttpRequest $req
delete_CkHttpResponse $resp
exit
}
# Get the JSON result:
# {"access_token":"TIhycwl8rfrZPkXGw15mwldASAAK","token_type":"Bearer","expires_in":7200}
set json [new_CkJsonObject]
CkJsonObject_Load $json [CkHttpResponse_bodyStr $resp]
puts "access_token: [CkJsonObject_stringOf $json access_token]"
puts "token_type: [CkJsonObject_stringOf $json token_type]"
puts "expires_in: [CkJsonObject_stringOf $json expires_in]"
delete_CkCert $cert
delete_CkBinData $bdKey
delete_CkPrivateKey $privKey
delete_CkHttp $http
delete_CkHttpRequest $req
delete_CkHttpResponse $resp
delete_CkJsonObject $json