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