如何使用 Microsoft Graph API 获取 Active Directory 用户的电话号码

时间:2021-02-16 15:35:50

标签: azure active-directory azure-active-directory microsoft-graph-api azure-ad-b2c

目前我在 Azure B2C 中有一个租户和一个使用电话号码和恢复电子邮件在 Active Directory 中注册用户的用户流。我正在使用 Microsoft Graph API 来获取用户列表,但是,它永远不会返回他们注册时使用的电话号码。如果我在 Active Directory 门户中查看用户,我会在用户主体名称下看到电话号码。

User as it appears in AD with the phone number under User Principal Name

但在从 Microsoft Graph API (https://graph.microsoft.com/v1.0/user) 返回的 JSON 中,userPrinicpalName 不是电话号码,而是一个随机字符串(可能是 OID)。

{
    "businessPhones": [],
    "displayName": "xxxxx",
    "givenName": "xxxxx",
    "jobTitle": null,
    "mail": null,
    "mobilePhone": null,
    "officeLocation": null,
    "preferredLanguage": null,
    "surname": "Saleem",
    "userPrincipalName": "cpim_38ae3f9d-8394-44fa-9ba9-6645d6454d4b@xxxx.onmicrosoft.com",
    "id": "f5casd1e-ce6e-4c15-a36d-a710b4ca77c2"
}

有什么办法可以从我的 AD 中获取用户列表及其电话号码?我还尝试使用如下过滤器通过电话号码获取用户 https://graph.microsoft.com/v1.0/users?$filter=identities/any(c:c/issuerAssignedId eq '+9231xxxxxxxx'和 c/issuer eq 'guardianlitedev.onmicrosoft.com') 但这会返回一个空数组。请帮忙!我的最终目标是根据给定的电话号码检查用户是否存在并返回他们的 OID。

1 个答案:

答案 0 :(得分:0)

我能够重现您的问题,并发现过滤器中的加号 (+) 是问题所在。通过使用标准 Url Encoding 对其进行编码,我发现成功了。

+ 符号被转换为 %2B

https://graph.microsoft.com/v1.0/users?$filter=identities/any(c:c/issuerAssignedId eq '+9231xxxxxxxx' and c/issuer eq 'guardianlitedev.onmicrosoft.com')

https://graph.microsoft.com/v1.0/users?$filter=identities/any(c:c/issuerAssignedId eq '%2B9231xxxxxxxx' and c/issuer eq 'guardianlitedev.onmicrosoft.com')

相关问题