Sample code for 30+ languages & platforms
AutoIt

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 AutoIt Downloads

AutoIt
Local $bSuccess = False

; 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 = ObjCreate("Chilkat.JsonObject")
$bSuccess = $oJsonToken.LoadFile("qa_data/tokens/geoop.json")

$oRest = ObjCreate("Chilkat.Rest")

; Connect to GeoOp...
Local $bAutoReconnect = True
$bSuccess = $oRest.Connect("login.geoop.com",443,True,$bAutoReconnect)
If ($bSuccess <> True) Then
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

; Set the X-Version header.
$oRest.AddHeader("X-Version","1.0")

; Provide the required form params to get the new access token
ConsoleWrite("refresh_token = " & $oJsonToken.StringOf("refresh_token") & @CRLF)
$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")

Local $sResponseBody = $oRest.FullRequestFormUrlEncoded("POST","/oauth2/token")
If ($oRest.LastMethodSuccess <> True) Then
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

; If the response status code did not indicate success, then see what happened..
If ($oRest.ResponseStatusCode <> 200) Then
    ConsoleWrite("Request Header: " & @CRLF)
    ConsoleWrite($oRest.LastRequestHeader & @CRLF)
    ConsoleWrite("----" & @CRLF)
    ConsoleWrite("Response StatusCode = " & $oRest.ResponseStatusCode & @CRLF)
    ConsoleWrite("Response StatusLine: " & $oRest.ResponseStatusText & @CRLF)
    ConsoleWrite("Response Header:" & @CRLF)
    ConsoleWrite($oRest.ResponseHeader & @CRLF)
    ConsoleWrite($sResponseBody & @CRLF)
    Exit
EndIf

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.EmitCompact = False
$oJson.Load($sResponseBody)

; Show the full JSON response.  It should contain the new access token...
ConsoleWrite($oJson.Emit() & @CRLF)