Firebase не хранит зарегистрированного пользователя - PullRequest
0 голосов
/ 01 июля 2018

Работал с Firebase почти пол года и никогда не сталкивался с этой проблемой. Используя код, как и прежде, для создания нового пользователя, он появляется в консоли, когда я закрываю приложение, в которое я могу войти, но используя тот же код, что и всегда, он запрашивает у меня пароль. В первом ВК у меня есть:

    if let user = Auth.auth().currentUser {
        performSegue(withIdentifier: "authorized", sender: self)
    }

Который проверит наличие сохраненного токена аутентификации и выполнит переход к экрану загрузки. Однако этого никогда не происходит. Код запускается, но ничего не делает, никаких ошибок в компиляторе и ошибок в консоли.

РЕДАКТИРОВАТЬ 1: также пытался создать новый проект, где я переписал весь код, получая тот же результат, но мой другой проект работает без каких-либо проблем, также я могу делать что-то еще, кроме этого, используя Firebase, например, доступ к Firestore просто нет сохраняя пользователя, просмотрел всю документацию, но не смог найти решения.

РЕДАКТИРОВАТЬ 2: войти в код

if(email.text != "" && password.text != ""){
        Auth.auth().signIn(withEmail: email.text!, password: password.text!) { user, error in
            if(error == nil && user != nil) {
                userID = (Auth.auth().currentUser?.uid)!
                print("Signed in as: \(userID)")

                self.performSegue(withIdentifier: "load", sender: self)
            } else {
                print("Error found: \(error?.localizedDescription)")
            }
        }
    }

Решение:

DispatchQueue.main.async(){
        if let user = Auth.auth().currentUser {
            userID = (Auth.auth().currentUser?.uid)!

            self.performSegue(withIdentifier: "authorized", sender: self)
        }
    }

Загружен с помощью async, поэтому firebase настроится перед проверкой на подлинность

1 Ответ

0 голосов
/ 01 июля 2018

Вероятно, проблема в том, что вы вызываете свой код до того, как firebase будет правильно инициализирован. Я рекомендую использовать контроллер вида ввода viewDidAppear для таких вещей, как эти. Если вы использовали viewDidLoad, вполне вероятно, что firebase еще не загрузился.

...