Xbase++
Xbase++
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 Xbase++ Downloads
LOCAL nSuccess
LOCAL oJsonToken
LOCAL oRest
LOCAL nBAutoReconnect
LOCAL cResponseBody
LOCAL oJson
nSuccess := 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==", .... }
oJsonToken := CreateObject("Chilkat.JsonObject")
nSuccess := oJsonToken:LoadFile("qa_data/tokens/geoop.json")
oRest := CreateObject("Chilkat.Rest")
// Connect to GeoOp...
nBAutoReconnect := 1
nSuccess := oRest:Connect("login.geoop.com", 443, 1, nBAutoReconnect)
IF (nSuccess != 1)
? oRest:LastErrorText
oJsonToken:destroy()
oRest:destroy()
RETURN
ENDIF
// Set the X-Version header.
oRest:AddHeader("X-Version", "1.0")
// Provide the required form params to get the new access token
? "refresh_token = " + oJsonToken:StringOf("refresh_token")
oRest:AddQueryParam("refresh_token", oJsonToken:StringOf("refresh_token"))
oRest:AddQueryParam("grant_type", "refresh_token")
oRest:AddQueryParam("client_id", "GEOOP-CLIENT-ID")
oRest:AddQueryParam("client_secret", "GEOOP-CLIENT-SECRET")
cResponseBody := oRest:FullRequestFormUrlEncoded("POST", "/oauth2/token")
IF (oRest:LastMethodSuccess != 1)
? oRest:LastErrorText
oJsonToken:destroy()
oRest:destroy()
RETURN
ENDIF
// If the response status code did not indicate success, then see what happened..
IF (oRest:ResponseStatusCode != 200)
? "Request Header: "
? oRest:LastRequestHeader
? "----"
? "Response StatusCode = " + Str(oRest:ResponseStatusCode)
? "Response StatusLine: " + oRest:ResponseStatusText
? "Response Header:"
? oRest:ResponseHeader
? cResponseBody
oJsonToken:destroy()
oRest:destroy()
RETURN
ENDIF
oJson := CreateObject("Chilkat.JsonObject")
oJson:EmitCompact := 0
oJson:Load(cResponseBody)
// Show the full JSON response. It should contain the new access token...
? oJson:Emit()
oJsonToken:destroy()
oRest:destroy()
oJson:destroy()