使用 Microsoft Graph 客户端库访问 user.MemberOf

2024-01-09

Note: 我最初提出这个问题 https://github.com/microsoftgraph/msgraph-sdk-dotnet/issues/66在客户端库存储库中,他们回复说这是服务库中的问题,而不是 .NET 库中的问题。

在开发过程中,我们一直在做这样的事情来获取用户组:

var user = await GraphClient.Users[userId].Request().Expand("memberOf").GetAsync();

其结果被提供给一个方法,该方法将使用可能返回的“NextPageRequest”对象来获取当前页面之外的结果。我们的假开发用户帐户以及早期的真实用户从未拥有足够的组成员身份来需要 NextPageRequest 逻辑,并且忘记了对其进行测试。

在获得拥有 20 多个组的用户后,最终发现,发出上述详细信息的请求会返回一页的成员资格,但不会返回 NextPageRequest 以在后续请求的选项中使用。您有关集合的文档看起来应该是这样完成的。

我相信您已经知道,一种有效的方法是这样的:

List<Group> userGroups = await GraphClient.Users[userId].MemberOf.Request().GetAsync().CurrentPage.Where(p => p.GetType() == typeof(Microsoft.Graph.Group)).Cast<Microsoft.Graph.Group>().ToList();

据我们所知,这会返回用户的所有组成员身份。如果意图是 Expand 不与“memberOf”一起使用,那么它根本不应该工作。目前,旧代码对于租户中 800 个用户中的大约 760 个用户运行良好,其余的是编写支票的用户:)。如果我们错误地执行了 .Expand("memberOf"),请告诉我。

此外,GetMemberGroups 的工作方式与 MemberOf 不同。意图是什么?也许做类似的事情GetMemberGroups(securityEnabledOnly = false, expandGroupInfo = false)可能会更清楚。


经过一番查看后,我找到了一个返回用户所有组的答案。

public async Task<List<string>> GetCurrentUserGroups(GraphServiceClient graphClient)
    {
        var totalGroups = new List<string>();
        var groups = await graphClient.Me.MemberOf.Request().GetAsync();

        while (groups.Count > 0)
        {
            foreach (Group g in groups)
            {
                totalGroups.Add(g.DisplayName);
            }
            if (groups.NextPageRequest != null)
            {
                groups = await groups.NextPageRequest.GetAsync();
            }
            else
            {
                break;
            }
        }
        return totalGroups;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Microsoft Graph 客户端库访问 user.MemberOf 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • 如何在目录上运行coverage.py?

    我有一个目录tests其中包括许多不同的测试 名为test 我试着跑coverage run tests但它不起作用 如何运行单个命令来覆盖目录中的多个文件 下面是一个完整的示例 其中来自同一 PWD 的所有阶段的命令都集中在一个位置 通过
  • 计算两个重复列表的差异

    我有两个清单 List
  • 为什么 join() 不自动将其参数转换为字符串?你什么时候不希望它们成为字符串?

    我们有一个清单 myList 1 two 想要打印出来 通常我会使用类似的东西 0 and 1 format myList 但你也可以这样做 and join myList 但不幸的是 gt gt gt and join myList Tr
  • 如何使用 google Mailapp 回复电子邮件线程?

    我正在使用 google Mailapp Api 从电子表格自动发送电子邮件 我编写了一个脚本来自动发送带有电子表格数据的电子邮件 目前 我的脚本会发送一封新电子邮件 有没有办法使用 google Mailapp api 向现有电子邮件线程
  • 打印时在 PDF 中插入空白页

    我确信这个问题无处不在 尽管我似乎找不到答案 我希望我的 PDF 文档在 PDF 阅读器中显示时没有空白页 但在封面后打印空白页 这样打印出来的文档右侧奇数页 左侧偶数页 有其他人遇到这个问题和 或找到解决方案吗 您可以使用多价工具 下载多
  • 如何将 Node.js 和 NPM 更新到最新版本?

    我刚刚安装了 Node js 和 NPM 节点包管理器 我安装了 NPM 来访问其他 Node js 模块 安装 Node js 和 NPM 后 我注意到两者都没有可用的最新版本 如何将 Node js NPM 和我的 Node js 模块
  • 错误:实体必须至少有 1 个用 @PrimaryKey 注释的字段

    我是使用房间持久性的新手 每当我尝试运行代码时都会出现此错误 编辑时没有显示错误 但我在 gradle 上遇到构建错误 我不得不复制粘贴代码 但似乎没有一个起作用 这让我很失望 错误如下 error An entity must have
  • NavigationLink 内的 tvOS 按钮不起作用

    我已经使用 swift 和 swiftui 构建了一个 iOS 应用程序 现在我正在开发该应用程序的 tvOS 版本 但是 我有几个问题 其中一个问题仍未解决 tvOS 文本字段透明背景 https stackoverflow com qu
  • 是否可以等到所有 javascript 文件加载完毕后再执行 javascript 代码?

    我们有几个 JavaScript 文件 我们在母版页的底部加载它们 但是 我遇到的情况是 我需要在加载其他脚本之前执行一些 JavaScript 是否可以等到所有 JavaScript 文件加载完毕后再执行一些 JavaScript 代码
  • 从 SCM 检出 Maven 项目 - 无连接器

    我在 Eclipse Indigo 中签出 Maven 项目时遇到问题 我已经安装了 m2e 插件 Subclipse Git 但无法选择合适的 SCM 类型 如何解决这个问题 阿凡是对的 连接器仍然在 Indigo 中 只是隐藏了一点 启
  • MotionLayout:同一视图上的 OnSwipe 和 OnClick

    我正在为我的页面使用 MotionLayout 我有两种状态 可以通过视图的 OnSwipe 进行切换
  • 从 Finalizer 调用托管资源是否安全? (如果我检查空)

    打电话不安全吗 组件 Dispose 如果我检查空 如果我将代码更改为 MyResource Dispose public void Dispose Check to see if Dispose has already been call
  • 错误:服务“xxx”使用未定义的网络“xxx”

    它一直对我说网络是不明确的 错误 服务frontend network使用未定义的网络frontend network 然而 我看到已经有这样一个网络 docker网络ls 我错过了什么 我需要你的帮助 我在谷歌上读了很多相关内容 但找不到
  • Google表格查询非连续范围

    是否可以编写一个引用非相邻 不连续 不连续 我不知道正确的短语 范围的查询 在公式内 例如 query A2 C E2 F 选择 Col2 其中 Col5 3 我希望能够将查询放在 D 列中 因此我想分割它周围的范围 如果我只是说 Quer
  • 在Python中迭代多个列表中值的所有组合[重复]

    这个问题在这里已经有答案了 给定多个可能不同长度的列表 我想迭代所有值的组合 每个列表中的一项 例如 first 1 5 8 second 0 5 4 然后我希望的输出是 combined 1 0 5 1 4 5 0 5 5 4 8 0 5
  • Dapper:单元测试 SQL 查询

    我从 Dapper 微型 ORM 开始 我使用 Dapper Rainbow 我想测试查询和它们检索的数据 我的意思是 例如 我有用户服务用方法GetAll 并且我想测试 sql 查询是否从某个列表中检索所有用户 不是从数据库中检索 因为我
  • 对象传播与 Object.assign

    假设我有一个options变量 我想设置一些默认值 这两种选择的优点 缺点是什么 使用对象传播 options optionsDefault options 或者使用 Object assign options Object assign
  • Android 中的捕获按钮释放

    是否可以像我们捕获单击一样捕获按钮的释放onClickListener and OnClick 我想在按下按钮时增加按钮的大小 并在释放单击时将其移回原始大小 谁能帮我怎么做 您应该在按钮上设置一个 OnTouchListener butt
  • 显示另一个 DialogFragment 中的 DialogFragment

    我有一个DialogFragment向用户显示选项列表 其中一个选项是 删除 选项 当用户按下删除选项时 我想显示另一个 DialogFragment 作为确认 不幸的是 确认对话框不显示 这是我的代码 第一个片段代码 public cla
  • 使用 Microsoft Graph 客户端库访问 user.MemberOf

    Note 我最初提出这个问题 https github com microsoftgraph msgraph sdk dotnet issues 66在客户端库存储库中 他们回复说这是服务库中的问题 而不是 NET 库中的问题 在开发过程中