Sample code for 30+ languages & platforms
B4X

Microsoft Graph -- List Users

See more Microsoft Graph Examples

Retrieve a list of Microsoft Graph user objects.

Chilkat B4X Downloads

B4X
Dim success As Boolean = 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
Dim http As ChilkatHttp
http.Initialize("http")
Dim req As ChilkatHttpRequest
req.Initialize
req.AddParam("client_secret", "CLIENT_SECRET")
req.AddParam("client_id", "CLIENT_ID")
req.AddParam("scope", "https://graph.microsoft.com/.default")
req.AddParam("grant_type", "client_credentials")

'  Use your own tenant ID, for example 4d8fdd66-66d1-43b0-ae5c-e31b4b7de5cd
Dim url As String = "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token"

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

Dim resp As ChilkatHttpResponse
resp.Initialize
success = http.HttpReq(url, req, resp)
If success = False Then
    Log(http.LastErrorText)
    Return
End If


Dim statusCode As Int = resp.StatusCode
Log("Response status code = " & statusCode)

Dim json As ChilkatJsonObject
json.Initialize
json.Load(resp.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:
http.AuthToken = json.StringOf("access_token")

Log("access token: " & http.AuthToken)

Dim sbResponse As ChilkatStringBuilder
sbResponse.Initialize

success = http.QuickGetSb("https://graph.microsoft.com/v1.0/users", sbResponse)
If success = False Then
    Log(http.LastErrorText)
    Return
End If


json.LoadSb(sbResponse)
json.EmitCompact = False

Log("Status code = " & http.LastStatus)
If http.LastStatus <> 200 Then
    Log(json.Emit)
    Log("Failed.")
End If


Log(json.Emit)

'  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

Dim odata_id As String
Dim displayName As String
Dim givenName As String
Dim jobTitle As String
Dim mail As String
Dim mobilePhone As String
Dim officeLocation As String
Dim preferredLanguage As String
Dim surname As String
Dim userPrincipalName As String
Dim id As String
Dim j As Int
Dim count_j As Int

Dim odata_context As String = json.StringOf(Chr(34) & "@odata.context" & Chr(34))
Dim i As Int = 0
Dim count_i As Int = json.SizeOfArray("value")
Do While i < count_i
    json.I = i
    odata_id = json.StringOf("value[i]." & Chr(34) & "@odata.id" & Chr(34))
    displayName = json.StringOf("value[i].displayName")
    givenName = json.StringOf("value[i].givenName")
    jobTitle = json.StringOf("value[i].jobTitle")
    mail = json.StringOf("value[i].mail")
    mobilePhone = json.StringOf("value[i].mobilePhone")
    officeLocation = json.StringOf("value[i].officeLocation")
    preferredLanguage = json.StringOf("value[i].preferredLanguage")
    surname = json.StringOf("value[i].surname")
    userPrincipalName = json.StringOf("value[i].userPrincipalName")
    id = json.StringOf("value[i].id")
    j = 0
    count_j = json.SizeOfArray("value[i].businessPhones")
    Do While j < count_j
        json.J = j
        j = j + 1
    Loop
    i = i + 1
Loop