首页 > 解决方案 > 无法使用 GraphAPI 通过电子邮件找到用户

问题描述

几个月来,我一直在使用 GraphAPI 通过电子邮件获取用户。特定用户发生了一些事情。现在我无法使用以下方法获得该用户:

signInNames/any(x:x/value eq '{email}'

这适用于除我之前所说的用户之外的所有用户。

我在尝试通过电子邮件检索时收到此消息:

{ 
  "odata.metadata": "https://graph.windows.net/jsmaddev.onmicrosoft.com/$metadata#directoryObjects", 
  "value":[]
}

如果我尝试通过 ObjectId 获取,我可以访问用户的信息,但 signInNames 似乎为空:

"signInNames":[]

有什么可能导致这种情况吗?您应该记住,此特定访问按预期工作。

谢谢!

标签: azure-ad-graph-api

解决方案


这个是正常的。过滤器signInNames/any(x:x/value eq '{email}'返回signInNames.value等于电子邮件的用户。

signInNames零件样本:

 "signInNames": [
    {
      "type": "userName",
      "value": "AlexW"
    },
    {
      "type": "emailAddress",
      "value": "AlexW@example.com"
    }
  ]

如果我尝试通过 ObjectId 获取,我可以访问用户的信息,但 signInNames 似乎为空

由于signInNames属性为空,"signInNames":[],它将返回"value":[]

在此处输入图像描述

您应该记住,此特定访问按预期工作。

当然,如果signInNames不为空,它会正常工作。

在此处输入图像描述


推荐阅读