Sample code for 30+ languages & platforms
DataFlex

Azure AD Service-to-service access token request

See more Azure OAuth2 Examples

Send an Azure AD service-to-service token request to get an access token using a shared secret.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    Variant vReq
    Handle hoReq
    Variant vResp
    Handle hoResp
    Integer iRespStatusCode
    Handle hoJson
    String sToken_type
    String sExpires_in
    String sExt_expires_in
    String sExpires_on
    String sNot_before
    String sResource
    String sAccess_token
    String sTemp1

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

    // To see the exact HTTP request sent and the response, set the SessionLogFilename property:
    Set ComSessionLogFilename Of hoHttp To "qa_output/chilkatHttpLog.txt"

    Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
    If (Not(IsComObjectCreated(hoReq))) Begin
        Send CreateComObject of hoReq
    End

    // Set the following request params:
    // grant_type 	required 	Specifies the requested grant type. In a Client Credentials Grant flow, the value must be client_credentials.
    // 
    // client_id 	required 	Specifies the Azure AD client id of the calling web service. 
    //     To find the calling application's client ID, in the Azure portal, click Azure Active Directory, click App registrations, click the application. 
    //     The client_id is the Application ID
    // 
    // client_secret 	required 	Enter a key registered for the calling web service or daemon application in Azure AD. 
    //     To create a key, in the Azure portal, click Azure Active Directory, click App registrations, click the application, click Settings, click Keys, and add a Key.
    //     URL-encode this secret when providing it.
    // 
    // resource 	required 	Enter the App ID URI of the receiving web service. To find the App ID URI, in the Azure portal, click Azure Active Directory, 
    //     click App registrations, click the service application, and then click Settings and Properties.

    Send ComAddParam To hoReq "grant_type" "client_credentials"
    Send ComAddParam To hoReq "client_id" "MY_CLIENT_ID"
    Send ComAddParam To hoReq "client_secret" "MY_CLIENT_SECRET"
    Send ComAddParam To hoReq "resource" "https://service.contoso.com/"

    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/<tenant_id>/oauth2/token" vReq vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComStatusCode Of hoResp To iRespStatusCode
    Showln "Response Status Code = " iRespStatusCode

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Set ComEmitCompact Of hoJson To False
    Get ComBodyStr Of hoResp To sTemp1
    Get ComLoad Of hoJson sTemp1 To iSuccess
    Showln "Response JSON:"
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    If (iRespStatusCode >= 400) Begin
        Showln "Response Header:"
        Get ComHeader Of hoResp To sTemp1
        Showln sTemp1
        Showln "Failed."
        Procedure_Return
    End

    // Sample response:

    // {
    //   "token_type": "Bearer",
    //   "expires_in": "3599",
    //   "ext_expires_in": "3599",
    //   "expires_on": "1570059833",
    //   "not_before": "1570055933",
    //   "resource": "https://adminchilkatsoft.onmicrosoft.com/eb1b8ced-76b7-4845-aec5-d3e91776e345",
    //   "access_token": "eyJ0eXAiO ... pmgw"
    // }

    // To get the items from the JSON....
    Get ComStringOf Of hoJson "token_type" To sToken_type
    Get ComStringOf Of hoJson "expires_in" To sExpires_in
    Get ComStringOf Of hoJson "ext_expires_in" To sExt_expires_in
    Get ComStringOf Of hoJson "expires_on" To sExpires_on
    Get ComStringOf Of hoJson "not_before" To sNot_before
    Get ComStringOf Of hoJson "resource" To sResource
    Get ComStringOf Of hoJson "access_token" To sAccess_token


End_Procedure