Я хочу знать адрес электронной почты пользователя для отправки электронного письма. В моем приложении люди могут зарегистрироваться с помощью социальных учетных записей (Google / Facebook / Microsoft) или локальных учетных записей. При создании локальной учетной записи мы используем электронную почту.
Я нашел эту информацию о том, как хранится электронная почта. https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-policies
Хранение адреса электронной почты : Адрес электронной почты может потребоваться как часть потока пользователя. Если пользователь проходит проверку подлинности с поставщиком социальной идентификации, адрес электронной почты сохраняется в свойстве otherMails. Если локальная учетная запись основана на имени пользователя, то адрес электронной почты хранится в свойстве детализации строгой аутентификации. Если локальная учетная запись основана на адресе электронной почты, тогда адрес электронной почты сохраняется в свойстве signInNames. Адрес электронной почты не гарантируется в любом из этих случаев. Администратор клиента может отключить проверку электронной почты в основных политиках для локальных учетных записей. Даже если проверка адреса электронной почты включена, адреса не проверяются, если они получены от поставщика социальных идентификаторов, и они не были изменены. Только другие свойстваMails и signInNames предоставляются через API-интерфейс Graph Active Directory. Адрес электронной почты в свойстве детализации строгой аутентификации недоступен
Не уверен, почему поле «Почта» для пользователя не используется ... но используется GraphApi:
Iсделать GET: https://graph.microsoft.com/v1.0/Users?$select=displayName,mail,otherMails,signInNames
Некоторые электронные письма появляются в «mail», другие в массиве «otherMails», и «singInNames» не может быть выбран :( не показывает никакой информации, поэтомунекоторые пользователи, которым я не могу получить информацию об электронной почте.
Как я могу решить эту проблему? Только с помощью Azure AD Graph вместо Microsoft Graph API , посколькув этом API возвращаются signInNames?
Нет ли способа хранить электронные письма всегда в одном и том же свойстве? Или хотя бы в одном из них, к которому у меня есть доступ в Microsoft Graph API? Использование пользовательских политик только с преобразованием утверждений?