Sample code for 30+ languages & platforms
AutoIt

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

AutoIt
Local $bSuccess = False

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

$oRest = ObjCreate("Chilkat.Rest")

; URL: https://login.microsoftonline.com/TENANT_ID/oauth2/token
Local $bTls = True
Local $iPort = 443
Local $bAutoReconnect = True
$bSuccess = $oRest.Connect("login.microsoftonline.com",$iPort,$bTls,$bAutoReconnect)
If ($bSuccess <> True) Then
    ConsoleWrite("ConnectFailReason: " & $oRest.ConnectFailReason & @CRLF)
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

; Add query params to the request.
$oRest.AddQueryParam("grant_type","client_credentials")
$oRest.AddQueryParam("client_id","APP_ID")
$oRest.AddQueryParam("client_secret","CLIENT_SECRET")
; Note: The resource must match the API for which you're using the access token..
$oRest.AddQueryParam("resource","https://management.azure.com/")

Local $strResponseBody = $oRest.FullRequestFormUrlEncoded("POST","/TENANT_ID/oauth2/token")
If ($oRest.LastMethodSuccess <> True) Then
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

Local $iRespStatusCode = $oRest.ResponseStatusCode
If ($iRespStatusCode >= 400) Then
    ConsoleWrite("Response Status Code = " & $iRespStatusCode & @CRLF)
    ConsoleWrite("Response Header:" & @CRLF)
    ConsoleWrite($oRest.ResponseHeader & @CRLF)
    ConsoleWrite("Response Body:" & @CRLF)
    ConsoleWrite($strResponseBody & @CRLF)
    Exit
EndIf

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.Load($strResponseBody)
$oJson.EmitCompact = False
ConsoleWrite($oJson.Emit() & @CRLF)

; 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..
$oJson.WriteFile("qa_data/tokens/azureToken.json")