Sample code for 30+ languages & platforms
DataFlex

Calendar: Refresh Expired OAuth2 Access Token

See more Microsoft Calendar Examples

Refreshes an expired OAuth2 access token.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoJson
    Variant vReq
    Handle hoReq
    Handle hoHttp
    Variant vResp
    Handle hoResp
    Handle hoFac
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComLoadFile Of hoJson "qa_data/tokens/msGraphCalendar.json" To iSuccess
    If (iSuccess <> True) Begin
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
    If (Not(IsComObjectCreated(hoReq))) Begin
        Send CreateComObject of hoReq
    End
    Send ComAddParam To hoReq "grant_type" "refresh_token"
    Send ComAddParam To hoReq "redirect_uri" "http://localhost:3017/"
    Send ComAddParam To hoReq "client_id" "MICROSOFT-GRAPH-CLIENT-ID"
    Send ComAddParam To hoReq "client_secret" "MICROSOFT-GRAPH-CLIENT-SECRET"
    Get ComStringOf Of hoJson "refresh_token" To sTemp1
    Send ComAddParam To hoReq "refresh_token" sTemp1
    Send ComAddParam To hoReq "scope" "openid profile offline_access user.readwrite calendars.readwrite files.readwrite"

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Set ComHttpVerb Of hoReq To "POST"
    Set ComContentType Of hoReq To "application/x-www-form-urlencoded"

    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoReq to vReq
    Get pvComObject of hoResp to vResp
    Get ComHttpReq Of hoHttp "https://login.microsoftonline.com/common/oauth2/v2.0/token" vReq vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Load the JSON response.
    Get ComBodyStr Of hoResp To sTemp1
    Get ComLoad Of hoJson sTemp1 To iSuccess
    Set ComEmitCompact Of hoJson To False

    // Show the JSON response.
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    Get ComStatusCode Of hoResp To iTemp1
    Showln "Response status code: " iTemp1

    // If the response status code is not 200, then it's an error.
    Get ComStatusCode Of hoResp To iTemp1
    If (iTemp1 <> 200) Begin
        Procedure_Return
    End

    // Save the refreshed access token JSON to a file for future requests.
    Get Create (RefClass(cComCkFileAccess)) To hoFac
    If (Not(IsComObjectCreated(hoFac))) Begin
        Send CreateComObject of hoFac
    End
    Get ComEmit Of hoJson To sTemp1
    Get ComWriteEntireTextFile Of hoFac "qa_data/tokens/msGraphCalendar.json" sTemp1 "utf-8" False To iSuccess

    Showln "Success."


End_Procedure