如何通过Microsoft Graph获取会议室的AAD Object ID而非RoomId?
获取会议室的AAD Object ID而非RoomId
默认通过Microsoft Graph SDK获取会议室时,返回的room.Id是会议室实体自身的ID,而非对应的AAD Object ID。要获取AAD Object ID,需要显式指定返回aadObjectId属性,具体有两种实现方式:
方法一:使用SDK的Select方法指定返回属性
修改你的请求代码,通过Select方法明确要求返回aadObjectId(可同时保留其他需要的属性):
var roomUrl = graphClient.Places.AppendSegmentToRequestUrl("microsoft.graph.room"); var request = new GraphServicePlacesCollectionRequest(roomUrl, graphClient, null) .Select("aadObjectId, id, displayName"); // 添加需要的属性,其中aadObjectId就是AAD Object ID var response = await request.GetAsync(); if (response.CurrentPage.Count > 0) { foreach (var room in response.CurrentPage) { // 这里room.AdditionalData["aadObjectId"]就是AAD Object ID Console.WriteLine($"AAD Object ID: {room.AdditionalData["aadObjectId"]}, Room ID: {room.Id}"); } }
说明:因为默认的Room实体类可能没有直接暴露aadObjectId属性,所以需要通过AdditionalData字典来获取该值。
方法二:直接在请求URL中添加$select参数
如果SDK的Select方法不生效,也可以直接构造包含$select参数的请求URL:
var roomUrl = graphClient.Places.AppendSegmentToRequestUrl("microsoft.graph.room?$select=aadObjectId,id,displayName"); var response = await new GraphServicePlacesCollectionRequest(roomUrl, graphClient, null).GetAsync(); if (response.CurrentPage.Count > 0) { foreach (var room in response.CurrentPage) { Console.WriteLine($"AAD Object ID: {room.AdditionalData["aadObjectId"]}"); } }
核心要点:aadObjectId字段就是会议室对应的AAD Object ID,只要在请求中指定返回该属性,就能从响应的附加数据中提取到它。
内容的提问来源于stack exchange,提问作者user989988
相关产品推荐
相关产品推荐

