【问题标题】:How to apply an equality filter to a Users request?如何将相等过滤器应用于用户请求?
【发布时间】:2021-02-01 22:02:27
【问题描述】:

我正在尝试使用 C# 和 GraphServiceClient 调用 MS Graph 用户 API。我正在尝试按Mail 过滤,但无论我尝试什么格式,它都会由于无效查询而被拒绝。我已经尝试了在互联网上找到的所有示例,但似乎找不到使用服务客户端按平等过滤用户的示例。

我在Filter 中尝试过以下操作。

$"eq('Mail', '{email}')", $"equal('Mail', '{email}')", $"equals('Mail', '{email}')", 和$"'Mail' eq '{email}'"

await _graphClient
    .Users
    .Request()
    .Filter(filter)
    .GetAsync();

我做了find a way to filter users,我的租户是发行者,但我还需要能够搜索受邀用户。

var filter = $"Identities/any(id:id/Issuer eq '{TenantName}' and id/IssuerAssignedId eq '{emailAddress}')";

删除TenantName 上的相等检查使其成为无效过滤器。

我在这里做错了什么;有可能吗?

【问题讨论】:

    标签: c# azure microsoft-graph-api graphserviceclient


    【解决方案1】:

    这是我代码中的过滤器供您参考:

    var response = await graphClient.Users.Request().Filter("mail eq 'test@mail.com'").GetAsync();
    

    【讨论】:

    • 好的!不带引号的驼峰式道具名称 - 非常好。
    【解决方案2】:

    第二种选择是直接在 URL 中传递电子邮件:

    https://graph.microsoft.com/v1.0/users/test@mail.com
    

    代码:

    var user = await graphClient.Users["test@mail.com"].Request().GetAsync();
    

    【讨论】:

    • 我试过了,但它无法通过实际电子邮件找到外部用户:“资源 'some@example.com' 不存在或其查询的引用属性对象之一不存在。”那是没有应用任何过滤。然而,赋予它主体名称虽然不太理想,但由于必须将外部电子邮件操作为丑陋的主体名称值。以some_example#EXT#@my.domain.com 为例。
    猜你喜欢
    • 1970-01-01
    • 2012-06-20
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多