Sample code for 30+ languages & platforms
PowerShell

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

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $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==", .... }
$jsonToken = New-Object Chilkat.JsonObject
$success = $jsonToken.LoadFile("qa_data/tokens/geoop.json")

$rest = New-Object Chilkat.Rest

# Connect to GeoOp...
$bAutoReconnect = $true
$success = $rest.Connect("login.geoop.com",443,$true,$bAutoReconnect)
if ($success -ne $true) {
    $($rest.LastErrorText)
    exit
}

# Set the X-Version header.
$rest.AddHeader("X-Version","1.0")

# Provide the required form params to get the new access token
$("refresh_token = " + $jsonToken.StringOf("refresh_token"))
$rest.AddQueryParam("refresh_token",$jsonToken.StringOf("refresh_token"))
$rest.AddQueryParam("grant_type","refresh_token")
$rest.AddQueryParam("client_id","GEOOP-CLIENT-ID")
$rest.AddQueryParam("client_secret","GEOOP-CLIENT-SECRET")

$responseBody = $rest.FullRequestFormUrlEncoded("POST","/oauth2/token")
if ($rest.LastMethodSuccess -ne $true) {
    $($rest.LastErrorText)
    exit
}

# If the response status code did not indicate success, then see what happened..
if ($rest.ResponseStatusCode -ne 200) {
    $("Request Header: ")
    $($rest.LastRequestHeader)
    $("----")
    $("Response StatusCode = " + $rest.ResponseStatusCode)
    $("Response StatusLine: " + $rest.ResponseStatusText)
    $("Response Header:")
    $($rest.ResponseHeader)
    $($responseBody)
    exit
}

$json = New-Object Chilkat.JsonObject
$json.EmitCompact = $false
$json.Load($responseBody)

# Show the full JSON response.  It should contain the new access token...
$($json.Emit())