Sample code for 30+ languages & platforms
DataFlex

Azure REST API Access Token

See more Azure OAuth2 Examples

Demonstrates how to request an Azure REST API OAUTH2 access token.

Note: In order to access resources a Service Principal needs to be created in your Tenant. It is really convenient to do it via AZ CLI:

az ad sp create-for-rbac --name [APP_NAME] --password [CLIENT_SECRET]

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoRest
    Boolean iBTls
    Integer iPort
    Boolean iBAutoReconnect
    String sStrResponseBody
    Integer iRespStatusCode
    Handle hoJson
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

    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(cComChilkatRest)) To hoRest
    If (Not(IsComObjectCreated(hoRest))) Begin
        Send CreateComObject of hoRest
    End

    // URL: https://login.microsoftonline.com/TENANT_ID/oauth2/token
    Move True To iBTls
    Move 443 To iPort
    Move True To iBAutoReconnect
    Get ComConnect Of hoRest "login.microsoftonline.com" iPort iBTls iBAutoReconnect To iSuccess
    If (iSuccess <> True) Begin
        Get ComConnectFailReason Of hoRest To iTemp1
        Showln "ConnectFailReason: " iTemp1
        Get ComLastErrorText Of hoRest To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Add query params to the request.
    Get ComAddQueryParam Of hoRest "grant_type" "client_credentials" To iSuccess
    Get ComAddQueryParam Of hoRest "client_id" "APP_ID" To iSuccess
    Get ComAddQueryParam Of hoRest "client_secret" "CLIENT_SECRET" To iSuccess
    // Note: The resource must match the API for which you're using the access token..
    Get ComAddQueryParam Of hoRest "resource" "https://management.azure.com/" To iSuccess

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

    Get ComResponseStatusCode Of hoRest To iRespStatusCode
    If (iRespStatusCode >= 400) Begin
        Showln "Response Status Code = " iRespStatusCode
        Showln "Response Header:"
        Get ComResponseHeader Of hoRest To sTemp1
        Showln sTemp1
        Showln "Response Body:"
        Showln sStrResponseBody
        Procedure_Return
    End

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

    // The result is an access token such as the following:

    // {
    //   "token_type": "Bearer",
    //   "expires_in": "3600",
    //   "ext_expires_in": "3600",
    //   "expires_on": "1557864616",
    //   "not_before": "1557860716",
    //   "resource": "https://management.azure.com/",
    //   "access_token": "eyJ0eXAiOiJKV1QiL ... 20UFDDOHEyUg"
    // }

    // We'll save this JSON to a file for other examples to use..
    Get ComWriteFile Of hoJson "qa_data/tokens/azureToken.json" To iSuccess


End_Procedure