Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Microsoft Graph -- List UsersSee more Microsoft Graph ExamplesRetrieve a list of Microsoft Graph user objects. For more information, see https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=http
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkHttpRequest.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; 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 http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf req.i = CkHttpRequest::ckCreate() If req.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttpRequest::ckAddParam(req,"client_secret","CLIENT_SECRET") CkHttpRequest::ckAddParam(req,"client_id","CLIENT_ID") CkHttpRequest::ckAddParam(req,"scope","https://graph.microsoft.com/.default") CkHttpRequest::ckAddParam(req,"grant_type","client_credentials") ; Use your own tenant ID, for example 4d8fdd66-66d1-43b0-ae5c-e31b4b7de5cd url.s = "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token" resp.i = CkHttp::ckPostUrlEncoded(http,url,req) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) ProcedureReturn EndIf statusCode.i = CkHttpResponse::ckStatusCode(resp) Debug "Response status code = " + Str(statusCode) json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp)) CkHttpResponse::ckDispose(resp) ; ----------------------------------------------------- ; 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: CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(json,"access_token")) Debug "access token: " + CkHttp::ckAuthToken(http) sbResponse.i = CkStringBuilder::ckCreate() If sbResponse.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkHttp::ckQuickGetSb(http,"https://graph.microsoft.com/v1.0/users",sbResponse) If success <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkJsonObject::ckDispose(json) CkStringBuilder::ckDispose(sbResponse) ProcedureReturn EndIf CkJsonObject::ckLoadSb(json,sbResponse) CkJsonObject::setCkEmitCompact(json, 0) Debug "Status code = " + Str(CkHttp::ckLastStatus(http)) If CkHttp::ckLastStatus(http) <> 200 Debug CkJsonObject::ckEmit(json) Debug "Failed." EndIf Debug CkJsonObject::ckEmit(json) ; 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 odata_id.s displayName.s givenName.s jobTitle.s mail.s mobilePhone.s officeLocation.s preferredLanguage.s surname.s userPrincipalName.s id.s j.i count_j.i odata_context.s = CkJsonObject::ckStringOf(json,Chr(34) + "@odata.context" + Chr(34)) i.i = 0 count_i.i = CkJsonObject::ckSizeOfArray(json,"value") While i < count_i CkJsonObject::setCkI(json, i) odata_id = CkJsonObject::ckStringOf(json,"value[i]." + Chr(34) + "@odata.id" + Chr(34)) displayName = CkJsonObject::ckStringOf(json,"value[i].displayName") givenName = CkJsonObject::ckStringOf(json,"value[i].givenName") jobTitle = CkJsonObject::ckStringOf(json,"value[i].jobTitle") mail = CkJsonObject::ckStringOf(json,"value[i].mail") mobilePhone = CkJsonObject::ckStringOf(json,"value[i].mobilePhone") officeLocation = CkJsonObject::ckStringOf(json,"value[i].officeLocation") preferredLanguage = CkJsonObject::ckStringOf(json,"value[i].preferredLanguage") surname = CkJsonObject::ckStringOf(json,"value[i].surname") userPrincipalName = CkJsonObject::ckStringOf(json,"value[i].userPrincipalName") id = CkJsonObject::ckStringOf(json,"value[i].id") j = 0 count_j = CkJsonObject::ckSizeOfArray(json,"value[i].businessPhones") While j < count_j CkJsonObject::setCkJ(json, j) j = j + 1 Wend i = i + 1 Wend CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkJsonObject::ckDispose(json) CkStringBuilder::ckDispose(sbResponse) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.