Как проверить, после входа в систему пользователь входит в систему через Facebook в firebase для ios swift? - PullRequest
0 голосов
/ 28 августа 2018

Мое приложение имеет Facebook и пароль электронной почты для входа в систему с помощью Firebase. Теперь для тех пользователей, которые подписаны с Facebook, я не хочу проверять их электронные письма. но в Auth.auth().currentUser?.isEmailVerified всегда возвращается false. так есть ли какой-либо другой способ обнаружения пользователя, вошедшего в систему с Facebook. Я знаю, что могу сохранить значение в настройках пользователя по умолчанию перед входом в систему, но после удаления и переустановки приложения я потеряю эту пользовательскую ошибку. в то время как firebase держит пользователя в системе. Я могу использовать связку ключей для этого, но если firebase предоставит это напрямую, это облегчит кодирование.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Вы можете использовать:

    if let user = Auth.auth().currentUser {

       if FBSDKAccessToken.current() != nil {
           // logged in using facebook
       }
       else {
           // logged in using manual email/password method
       }
    }

, чтобы вы могли отправлять письма с подтверждением только тем, кто вошел в систему, используя метод электронной почты / пароль.

0 голосов
/ 28 августа 2018

Я нахожу одно решение с помощью методов firebase:

if let providerData = Auth.auth().currentUser?.providerData {
    for userInfo in providerData {
        switch userInfo.providerID {
        case "facebook.com":
            print("Facebook Login")
            //isVerifiededUser = true
        default:
            print("provider is \(userInfo.providerID)")
        }
    }
}
0 голосов
/ 28 августа 2018

Firebase не предоставляет метод для отображения, который был первым методом, использованным для создания учетной записи Firebase. У вас будет список всех провайдеров, прикрепленных к пользователю firebase с прикрепленными к ним электронными адресами / номером телефона.

Firebase по умолчанию устанавливает только электронные письма, проверенные для входа в Google, для других провайдеров поведение Firebase должно устанавливать значение false (хотя в некоторых случаях оно действительно устанавливает случайным образом проверенное сообщение). Причина в том, что Firebase не может гарантировать, что электронная почта проверена Facebook на их платформе , но в случае Google firebase имеет доверие.

Один из вариантов - вы всегда отправляете электронное письмо с подтверждением независимо от Facebook или Email Auth. Во-вторых, вы отказываетесь от входа в систему с помощью пароля электронной почты и вместо этого используете новую аутентификацию ссылки электронной почты, которая устраняет необходимость аутентификации электронной почты, необходимой для входа в систему с паролем.

EDIT:

если вы разрешаете использовать только один метод за один раз, то вы можете получить список поставщиков от пользователя firebase и проверить, присутствует ли в списке поставщиков метод входа «пароль», отправить проверочное письмо после проверки подтвержденного адреса электронной почты, иначе не отправляйте электронное письмо и продолжайте приложение

Вот ресурс для аутентификации по электронной почте: https://firebase.google.com/docs/auth/ios/email-link-auth

...