В настоящее время я работаю над регистрацией / входом в мое приложение с использованием 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.