Tcl
Tcl
GeoOp Exchange Refresh Token for New Access Token
See more GeoOp Examples
Demonstrates how to use the /oauth2/token endpoint to exchange it for a new access token once the current access token has expired.Note: This example requires Chilkat v9.5.0.65 or greater.
Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# This example also assumes that OAuth2 access and refresh tokens were previously fetched.
# and saved in a JSON file.
# First get our previously obtained refresh token.
# { .... "refresh_token":"e6dqdG....mzjpT04w==", .... }
set jsonToken [new_CkJsonObject]
set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/geoop.json"]
set rest [new_CkRest]
# Connect to GeoOp...
set bAutoReconnect 1
set success [CkRest_Connect $rest "login.geoop.com" 443 1 $bAutoReconnect]
if {$success != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkJsonObject $jsonToken
delete_CkRest $rest
exit
}
# Set the X-Version header.
CkRest_AddHeader $rest "X-Version" "1.0"
# Provide the required form params to get the new access token
puts "refresh_token = [CkJsonObject_stringOf $jsonToken refresh_token]"
CkRest_AddQueryParam $rest "refresh_token" [CkJsonObject_stringOf $jsonToken "refresh_token"]
CkRest_AddQueryParam $rest "grant_type" "refresh_token"
CkRest_AddQueryParam $rest "client_id" "GEOOP-CLIENT-ID"
CkRest_AddQueryParam $rest "client_secret" "GEOOP-CLIENT-SECRET"
set responseBody [CkRest_fullRequestFormUrlEncoded $rest "POST" "/oauth2/token"]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkJsonObject $jsonToken
delete_CkRest $rest
exit
}
# If the response status code did not indicate success, then see what happened..
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
puts "Request Header: "
puts [CkRest_lastRequestHeader $rest]
puts "----"
puts "Response StatusCode = [CkRest_get_ResponseStatusCode $rest]"
puts "Response StatusLine: [CkRest_responseStatusText $rest]"
puts "Response Header:"
puts [CkRest_responseHeader $rest]
puts "$responseBody"
delete_CkJsonObject $jsonToken
delete_CkRest $rest
exit
}
set json [new_CkJsonObject]
CkJsonObject_put_EmitCompact $json 0
CkJsonObject_Load $json $responseBody
# Show the full JSON response. It should contain the new access token...
puts [CkJsonObject_emit $json]
delete_CkJsonObject $jsonToken
delete_CkRest $rest
delete_CkJsonObject $json