Sample code for 30+ languages & platforms
DataFlex

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

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
Token    Handle hoJsonToken
    Handle hoRest
    Boolean iBAutoReconnect
    String sResponseBody
    Handle hoJson
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

    Move False To iSuccess

    // 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==", .... }
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
    If (Not(IsComObjectCreated(hoJsonToken))) Begin
        Send CreateComObject of hoJsonToken
    End
    Get ComLoadFile Of hoJsonToken "qa_data/tokens/geoop.json" To iSuccess

    Get Create (RefClass(cComChilkatRest)) To hoRest
    If (Not(IsComObjectCreated(hoRest))) Begin
        Send CreateComObject of hoRest
    End

    // Connect to GeoOp...
    Move True To iBAutoReconnect
    Get ComConnect Of hoRest "login.geoop.com" 443 True iBAutoReconnect To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoRest To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Set the X-Version header.
    Get ComAddHeader Of hoRest "X-Version" "1.0" To iSuccess

    // Provide the required form params to get the new access token
    Get ComStringOf Of hoJsonToken "refresh_token" To sTemp1
    Showln "refresh_token = " sTemp1
    Get ComStringOf Of hoJsonToken "refresh_token" To sTemp1
    Get ComAddQueryParam Of hoRest "refresh_token" sTemp1 To iSuccess
    Get ComAddQueryParam Of hoRest "grant_type" "refresh_token" To iSuccess
    Get ComAddQueryParam Of hoRest "client_id" "GEOOP-CLIENT-ID" To iSuccess
    Get ComAddQueryParam Of hoRest "client_secret" "GEOOP-CLIENT-SECRET" To iSuccess

    Get ComFullRequestFormUrlEncoded Of hoRest "POST" "/oauth2/token" To sResponseBody
    Get ComLastMethodSuccess Of hoRest To bTemp1
    If (bTemp1 <> True) Begin
        Get ComLastErrorText Of hoRest To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // If the response status code did not indicate success, then see what happened..
    Get ComResponseStatusCode Of hoRest To iTemp1
    If (iTemp1 <> 200) Begin
        Showln "Request Header: "
        Get ComLastRequestHeader Of hoRest To sTemp1
        Showln sTemp1
        Showln "----"
        Get ComResponseStatusCode Of hoRest To iTemp1
        Showln "Response StatusCode = " iTemp1
        Get ComResponseStatusText Of hoRest To sTemp1
        Showln "Response StatusLine: " sTemp1
        Showln "Response Header:"
        Get ComResponseHeader Of hoRest To sTemp1
        Showln sTemp1
        Showln sResponseBody
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Set ComEmitCompact Of hoJson To False
    Get ComLoad Of hoJson sResponseBody To iSuccess

    // Show the full JSON response.  It should contain the new access token...
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1


End_Procedure