Sample code for 30+ languages & platforms
AutoIt

Microsoft Graph -- List Users

See more Microsoft Graph Examples

Retrieve a list of Microsoft Graph user objects.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; ------------------------------------------------------------------------------------------------------
; See an easier way to do OAuth2 client credentials:
; Example using Automatic OAuth2 Client Credentials
; ------------------------------------------------------------------------------------------------------

; Get an access token with the required scope using client credentials...
; See How to Create Microsoft Graph App (in Azure Portal) for Client Credentials Authentication
$oHttp = ObjCreate("Chilkat.Http")
$oReq = ObjCreate("Chilkat.HttpRequest")
$oReq.AddParam "client_secret","CLIENT_SECRET"
$oReq.AddParam "client_id","CLIENT_ID"
$oReq.AddParam "scope","https://graph.microsoft.com/.default"
$oReq.AddParam "grant_type","client_credentials"

; Use your own tenant ID, for example 4d8fdd66-66d1-43b0-ae5c-e31b4b7de5cd
Local $sUrl = "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token"

$oReq.HttpVerb = "POST"
$oReq.ContentType = "application/x-www-form-urlencoded"

$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpReq($sUrl,$oReq,$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

Local $iStatusCode = $oResp.StatusCode
ConsoleWrite("Response status code = " & $iStatusCode & @CRLF)

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.Load($oResp.BodyStr)

; -----------------------------------------------------
; Use the access token obtained from above.
; Note: We don't need to re-fetch a new access token every time.  An access token is valid 
; for some amount of time, typically an hour (3600 seconds)

; Use your previously obtained access token here:
$oHttp.AuthToken = $oJson.StringOf("access_token")

ConsoleWrite("access token: " & $oHttp.AuthToken & @CRLF)

$oSbResponse = ObjCreate("Chilkat.StringBuilder")

$bSuccess = $oHttp.QuickGetSb("https://graph.microsoft.com/v1.0/users",$oSbResponse)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

$oJson.LoadSb($oSbResponse)
$oJson.EmitCompact = False

ConsoleWrite("Status code = " & $oHttp.LastStatus & @CRLF)
If ($oHttp.LastStatus <> 200) Then
    ConsoleWrite($oJson.Emit() & @CRLF)
    ConsoleWrite("Failed." & @CRLF)
EndIf

ConsoleWrite($oJson.Emit() & @CRLF)

; Sample output
; {
;   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
;   "value": [
;     {
;       "@odata.id": "https://graph.microsoft.com/v2/6d8ddd66-68d1-43b0-af5c-e31b4b7dd5cd/directoryObjects/fca490d8-5918-4201-8079-c5dcbeafcdc9/Microsoft.DirectoryServices.User",
;       "businessPhones": [
;       ],
;       "displayName": "Joe Sample",
;       "givenName": "Joe",
;       "jobTitle": null,
;       "mail": null,
;       "mobilePhone": null,
;       "officeLocation": null,
;       "preferredLanguage": null,
;       "surname": "Sample",
;       "userPrincipalName": "admin_chilkatsoft.com#EXT#@adminchilkatsoft.onmicrosoft.com",
;       "id": "fca490d8-5918-4201-8079-c5dcbeafcdc9"
;     }
;   ]
; }

; Use this online tool to generate parsing code from sample JSON: 
; Generate Parsing Code from JSON

Local $sOdata_id
Local $sDisplayName
Local $sGivenName
Local $sJobTitle
Local $sMail
Local $sMobilePhone
Local $sOfficeLocation
Local $sPreferredLanguage
Local $surname
Local $sUserPrincipalName
Local $sId
Local $iJ
Local $iCount_j

Local $sOdata_context = $oJson.StringOf("""@odata.context""")
Local $i = 0
Local $iCount_i = $oJson.SizeOfArray("value")
While $i < $iCount_i
    $oJson.I = $i
    $sOdata_id = $oJson.StringOf("value[i].""@odata.id""")
    $sDisplayName = $oJson.StringOf("value[i].displayName")
    $sGivenName = $oJson.StringOf("value[i].givenName")
    $sJobTitle = $oJson.StringOf("value[i].jobTitle")
    $sMail = $oJson.StringOf("value[i].mail")
    $sMobilePhone = $oJson.StringOf("value[i].mobilePhone")
    $sOfficeLocation = $oJson.StringOf("value[i].officeLocation")
    $sPreferredLanguage = $oJson.StringOf("value[i].preferredLanguage")
    $surname = $oJson.StringOf("value[i].surname")
    $sUserPrincipalName = $oJson.StringOf("value[i].userPrincipalName")
    $sId = $oJson.StringOf("value[i].id")
    $iJ = 0
    $iCount_j = $oJson.SizeOfArray("value[i].businessPhones")
    While $iJ < $iCount_j
        $oJson.J = $iJ
        $iJ = $iJ + 1
    Wend
    $i = $i + 1
Wend