Как проверить, была ли учетная запись Google / Facebook уже использована для создания учетной записи в Firebase Auth - PullRequest
1 голос
/ 25 января 2020

В настоящее время я работаю над регистрацией / входом в мое приложение с использованием Firebase Authentication. У меня есть пользовательские кнопки для регистрации / входа в Facebook и регистрации / входа в Google.

Например, код кнопки регистрации / входа в Facebook -

@objc private func performFacebookLogin(_ sender: UIButton) {
        let fbLoginManager : LoginManager = LoginManager()
        fbLoginManager.logIn(permissions: ["email"], from: self) { (result, error) -> Void in
            if let error = error {
                print(error)
            } else {
                if result == nil {
                    print("no result!")
                    return
                }
                if AccessToken.current == nil {
                    print("no token")
                    return
                }
                DispatchQueue.main.async {
                    ThirdPartySignupViewController.push(fromVC: self, method: .facebook)
                }
            }
        }
    }

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

Однако я не могу найти способ определить, действительно ли Учетная запись Facebook ранее использовалась для учетной записи в приложении, и в этом случае я хочу просто войти в систему пользователя и вывести его на главный экран. Есть ли способ сделать это?

Я попробовал метод signIn(with:), надеясь, что он вернет ошибку, если в приложении нет учетной записи с учетными данными этой учетной записи Facebook, но это не будет работать, потому что это приведет к созданию новой учетной записи, если учетная запись Facebook ранее не использовалась для создания учетной записи.

let credential = FacebookAuthProvider.credential(withAccessToken: AccessToken.current!.tokenString)
Auth.auth().signIn(with: credential) { (authResult, error) in
   //check if I get an error if the Facebook account has not been used             
}

(РЕДАКТИРОВАТЬ) Требуемый поток 1. Войдите в систему с Facebook / Google → 2.Введите дополнительную информацию → 3.Создайте учетную запись в Firebase Authentication.

1 Ответ

1 голос
/ 25 января 2020

При аутентификации с помощью Firebase - объект Auth возвращает isNewUser - additionalUserInfo. Поэтому вы можете видеть статус нового или существующего пользователя.

let credential = FacebookAuthProvider.credential(withAccessToken: AccessToken.current!.tokenString)
    Auth.auth().signIn(with: credential) { (authResult, error) in
        //authResult?.additionalUserInfo?.isNewUser
        if let auth = authResult{
            if auth.additionalUserInfo?.isNewUser {
                // User has not been authenticated before. Do what you need
            } else {
                // User has been authenticated before
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...