Анонимный вход через Firebase влияет на вход в Facebook - PullRequest
0 голосов
/ 09 мая 2018

У меня возникли проблемы с попыткой входа / авторизации 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. Спасибо!

1 Ответ

0 голосов
/ 21 июня 2018

let loginManager = FBSDKLoginManager () loginManager.logIn (withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: {(result: FBSDKLoginManagerLoginResult !, ошибка) -> Void in // получить токен fbsdk и войти через firebase}) Auth.auth (). signInAnonymously {(пользователь, ошибка) в случае, если let error = error {print (error.localizedDescription)}, если let user = user {let loginManager = FBSDKLoginManager () loginManager. logIn (withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: {(result: FBSDKLoginManagerLoginResult !, ошибка) -> Void in // получить маркер fbsdk и войти через firebase})}}

...