У меня возникли проблемы с попыткой входа / авторизации Facebook в связи с анонимным входом в Firebase.
В настоящее время у меня есть обычный UIButton
, который пытается войти в систему с помощью приведенного ниже кода.
let loginManager = FBSDKLoginManager()
loginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: { (result: FBSDKLoginManagerLoginResult!, error) -> Void in
// get fbsdk token and login through firebase
})
Как правило, нажатие на кнопку вызывает нормальное поведение, при котором отображается alertController
и спрашивает пользователя, хотят ли они использовать facebook.com для входа. После нажатия кнопки «Продолжить» открывается Safari (или facebook), чтобы авторизовать приложение.
Это все прекрасно, но если пользователь впервые анонимно войдет в Firebase, щелкнуть по той же кнопке, чтобы войти через Facebook, теперь не удастся. После того, как всплывающее окно alertController спросит пользователя, вместо того, чтобы представлять Safari для авторизации в Facebook, он выглядит так, как будто экран (Safari) прерывается на полпути во время презентации и просто остается на текущем экране. Если вы нажмете на кнопку еще раз, приложение, наконец, завершит работу без сообщений об ошибках
(он просто покажет сообщение EXC_BAD_ACCESS в AppDelegate).
В качестве примера я привел приведенный ниже код, чтобы показать, как гарантировать ошибку входа в Facebook.
Auth.auth().signInAnonymously { (user, error) in
if let error = error {
print(error.localizedDescription)
}
if let user = user {
let loginManager = FBSDKLoginManager()
loginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: { (result: FBSDKLoginManagerLoginResult!, error) -> Void in
// get fbsdk token and login through firebase
})
}
}
Очевидно, что в моем реальном коде я не пытаюсь войти в систему сразу после того, как я вхожу анонимно, но это демонстрирует, что анонимная подпись явно как-то влияет на FBSDKLoginManager
. Я смотрел на SO, но на самом деле не видел никаких вопросов по этому поводу. Хотите знать, если это ошибка или я просто что-то упускаю.
Это на iOS / Swift FYI.
Спасибо!