AutoIt
AutoIt
Microsoft Graph -- List Users
See more Microsoft Graph Examples
Retrieve a list of Microsoft Graph user objects.Chilkat AutoIt Downloads
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