Как я могу получить все (или выбрать одну) зарегистрированные учетные записи электронной почты на устройстве iOS (для текущего пользователя)

#ios

Вопрос:

В Настройках iOS/Контактах/учетных записях пользователь может добавлять различные учетные записи электронной почты. Как я могу получить их программно? По крайней мере, адрес электронной почты и имя поставщика. Или откройте сборщик с ними, как https://docs.microsoft.com/en-us/windows/uwp/security/web-account-manager

Комментарии:

1. Вы не можете получить адреса электронной почты пользователя программно. Это было бы нарушением конфиденциальности. Вы можете предоставить им текстовое поле для ввода адреса электронной почты. Если вы установите для его типа содержимого значение «Электронная почта», iOS предложит пользователю адреса электронной почты на панели быстрого доступа.

2. Но если пользователю предоставляется средство выбора, и он/она выбирает учетную запись и явно предоставляет доступ, это не так. Что предоставляют Windows и Android

3. Это недоступная функция в iOS. Было бы трудно обеспечить безопасность этой функции. Средство выбора должно быть представлено не в процессе, чтобы вредоносное приложение не занималось самоанализом иерархии представлений и утечкой адресов электронной почты. Возможно, Android и Windows сделали это, или, может быть, они не думают о конфиденциальности так много, как Apple.

4. Если посмотреть на функцию Microsoft, на которую вы ссылались, она отличается от того, что вы запрашиваете; она позволяет пользователю выбрать одного из известных в настоящее время поставщиков идентификационных данных и завершить аутентификацию по протоколу oauth, чтобы получить токен. Это сильно отличается от получения списка учетных записей электронной почты.

5. Вы можете использовать платформу MSAL для iOS для выполнения проверки подлинности при посредничестве Azure AD (enterprise или B2C). Существуют также эквивалентные системы аутентификации для других поставщиков, таких как Google, Facebook и Twitter, но в iOS нет встроенной системы аутентификации общего назначения.