Joã*_*nes 4 azure azure-ad-graph-api azure-ad-b2c microsoft-graph-api
我想知道发送电子邮件的用户的电子邮件地址。在我的应用程序中,人们可以使用社交帐户(google/facebook/Microsoft)或本地帐户进行注册。创建本地帐户时,我们使用电子邮件。
我找到了有关如何存储电子邮件的信息。 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-policies
电子邮件地址存储:电子邮件地址可能是用户流程的一部分。如果用户通过社交身份提供商进行身份验证,则电子邮件地址存储在 otherMails 属性中。如果本地帐户基于用户名,则电子邮件地址存储在强身份验证详细信息属性中。如果本地帐户基于电子邮件地址,则电子邮件地址存储在 signInNames 属性中。在任何这些情况下,都不能保证电子邮件地址会得到验证。租户管理员可以在本地帐户的基本策略中禁用电子邮件验证。即使启用了电子邮件地址验证,如果地址来自社交身份提供商且未更改,也不会进行验证。只有 otherMails 和 signInNames 属性通过 Active Directory Graph API 公开。
不知道为什么没有使用用户的“邮件”字段......而是使用 GraphApi:
我做了一个 GET:https : //graph.microsoft.com/v1.0/Users ?$select=displayName,mail,otherMails,signInNames
一些电子邮件出现在“邮件”中,另一些出现在“otherMails”数组中,并且无法选择“singInNames”:( 不显示任何信息,因此有些用户我无法获取有关电子邮件的信息.
我该如何解决这个问题?仅使用Azure AD Graph而不是Microsoft Graph API,因为在该 API 上返回了 signInNames?
没有任何方法可以将电子邮件始终存储在同一属性上吗?或者至少我可以访问 Microsoft Graph API 的一个?仅在声明转换中使用自定义策略?
Mar*_*l W 11
在 Microsoft Graph API 中,您可以使用:
GET: https://graph.microsoft.com/v1.0/Users?$select=displayName,mail,identities,otherMails
Run Code Online (Sandbox Code Playgroud)
您可以在身份集合中找到本地帐户的电子邮件。
在 Graph API (graph.microsoft.com/beta) 的 BETA 版本中,身份和 otherMails 属性也会在没有 $select 的情况下返回,而在 v1.0 版本中,只有在 $select 中指定时才会返回。
小智 5
我设法通过以下 Microsoft Graph API 调用获取了 Azure B2C 用户的电子邮件:
https://graph.microsoft.com/v1.0/users?$select=identities
您需要通过 AD Graph API 收集来自不同地方的电子邮件地址,例如mail、otherMails和signInNames。SignInNames在 Microsoft Graph API 中不可用。
请注意,如果用户使用用户名+电子邮件验证登录,则无法检索所使用的电子邮件。
或者,您可以在 自定义策略 中添加自定义属性,您可以在其中要求用户输入其电子邮件地址。之后,您可以使用 AD Graph 获取自定义属性(此处为示例)。
| 归档时间: |
|
| 查看次数: |
2313 次 |
| 最近记录: |