【问题标题】:How to list users in group email in Microsoft Graph?如何在 Microsoft Graph 的群组电子邮件中列出用户?
【发布时间】:2018-02-05 16:06:18
【问题描述】:

是否有 Microsoft Graph API 可以像 Outlook 的功能一样在群组电子邮件中列出用户?

如果有这个API,在什么时候使用

group1engineers@example.com

它会列出

 - jack@example.com
 - tom@example.com
 - rose@example.com
 - etc.

更新 1:尝试过

GET /groups/group1engineers@example.com/members

Graph Explorer 上(有权访问 Directory.ReadWrite.All)

但是错误 400

{
    "error": {
        "code": "Request_BadRequest",
        "message": "Invalid object identifier 'group1engineers@example.com'.",
        "innerError": {
            "request-id": "dad057af-2b67-4186-bc8c-df2b10fc2d0c",
            "date": "2018-02-02T09:53:51"
        }
    }
}

更新 2:尝试过

GET /groups?$filter=mail eq 'group1engineers@example.com'
GET /groups?$filter=mailNickname eq 'group1engineers'

两者都得到相同的结果,仍然没有组成员出现(这个组有 7 个成员):

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups",
    "value": [
        {
            "id": "4822c6e4-91b5-4db8-ae1a-2a52353f8c28",
            "deletedDateTime": null,
            "classification": null,
            "createdDateTime": "2017-09-01T08:13:42Z",
            "description": null,
            "displayName": "Group 1 Engineers",
            "groupTypes": [],
            "mail": "group1engineers@example.com",
            "mailEnabled": true,
            "mailNickname": "group1engineers",
            "onPremisesLastSyncDateTime": "2017-11-16T20:47:17Z",
            "onPremisesProvisioningErrors": [],
            "onPremisesSecurityIdentifier": "S-1-5-21-2127521184-1604012920-1887927527-28525981",
            "onPremisesSyncEnabled": true,
            "preferredDataLocation": null,
            "proxyAddresses": [
                "x500:/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=63886b35b89a410dacad845a76016073-GROUP1ENGINEERS",
                "X500:/o=microsoft/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=3f0ecc97b6be4ff08bac734225ae5a30-GROUP1ENGINEERS",
                "X500:/o=microsoft/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=beac216013b54a78a81cad98bdb34df0-GROUP1ENGINEERS",
                "smtp:group1engineers@example.onmicrosoft.com",
                "smtp:group1engineers@service.example.com",
                "smtp:group1engineers@064d.mgd.example.com",
                "SMTP:group1engineers@example.com"
            ],
            "renewedDateTime": "2017-09-01T08:13:42Z",
            "securityEnabled": false,
            "visibility": null
        }
    ]
}

【问题讨论】:

    标签: outlook microsoft-graph-api


    【解决方案1】:

    是的,您可以使用 Graph API 获取组成员。来自https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/group_list_members

    GET https://graph.microsoft.com/v1.0/groups/{id}/members
    

    注意它不是传递的,所以如果一个组包含另一个组,你必须遍历所有的孩子。

    要搜索组并立即获取其成员,您可以使用 $filter 和 $expand 查询参数:

    https://graph.microsoft.com/v1.0/groups?$filter=mailNickname eq 'group1engineers'&$expand=members
    

    documentation 包含有关哪些属性可以被 $filter'ed 的信息。在属性描述中查找文本“Supports $filter”。

    【讨论】:

    • 我相信它需要来自 Azure AD 的该组的 ID(它是一个 GUID)。您可以使用 List Groups 操作 (developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/…) 和 mailNickName 属性上的 $filter 表达式来查找 ID。
    • 谢谢,但仍然未能获得群组成员。在有问题的更新 2 中添加。
    • 您是否尝试使用群组 ID 4822c6e4-91b5-4db8-ae1a-2a52353f8c28 作为成员呼叫 GET /groups/4822c6e4-91b5-4db8-ae1a-2a52353f8c28/members 中的 ID?
    • 哦,现在可以了!好的,这意味着我需要两个步骤来获取组成员。如果有一步式 API,那就太棒了。
    • 这是扩展查询参数可以帮助您的地方。尝试运行:https://graph.microsoft.com/v1.0/groups?$filter=mailNickname eq 'group1engineers'&$expand=members
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多