Есть ли способ использовать Firebase с ShareExtension без AppGroups - PullRequest
1 голос
/ 07 июня 2019

Я настраиваю shareExtension в iOS и хочу использовать FirebaseSDK для прямой загрузки данных вместо использования AppGroups. Это работает, как и ожидалось, но через 1 час UserToken get становится недействительным, и я больше не могу получить Firestore Backend.

Я использую FirebaseSDK (6.2.0) и включил общий доступ к связке ключей для доступа к текущему подписанному пользователю. У меня такие же Google-Plist в MainApp и shareExtension. Данные также правильно загружаются из shareExtension и также обновляются через snapshotListener в MainApp.

Соответствующий код в MainApp

    lazy var db = Firestore.firestore()
    //TEAMID form the Apple Developer Portal
    let accessGroup = "TEAMID.de.debug.fireAuthExample"

    override func viewDidLoad() {
        super.viewDidLoad()
        do {
            try Auth.auth().useUserAccessGroup("\(accessGroup)")
        } catch let error as NSError {
            print("Error changing user access group: %@", error)
        }
        guard let user = Auth.auth().currentUser else {
            self.statusLabel.text = "user get's lost"
            return
        }
        statusLabel.text = "UserID: \(user.uid)"
        // Do any additional setup after loading the view.
        db.collection("DummyCollection").addSnapshotListener { (querySnapshot, error) in
            if let err = error {
                print(err.localizedDescription)
            }
            guard let snapshot = querySnapshot else {
                return
            }
            DispatchQueue.main.async {
                self.dbCountLabel.text = "\(snapshot.count)"
            }
        }

    }

        func signIN(){
        // https://firebase.google.com/docs/auth/ios/single-sign-on
        do {
            try Auth.auth().useUserAccessGroup("\(accessGroup)")
        } catch let error as NSError {
            print("Error changing user access group: %@", error)
        }
        Auth.auth().signInAnonymously { (result, error) in
            if let err = error{
                print(err.localizedDescription)
                return
            }
            print("UserID: \(Auth.auth().currentUser!.uid)")
            }
        }
    }
 }  

Код в shareExtension:

override func viewDidLoad() {
        super.viewDidLoad()

        if FirebaseApp.app() == nil {
            FirebaseApp.configure()
        }
        do {
            try Auth.auth().useUserAccessGroup(accessGroup)
        } catch let error as NSError {
            print("Error changing user access group: %@", error)
        }
        tempUser = Auth.auth().currentUser

        if tempUser != nil {
            userIDLabel.text = "UserID: \(tempUser!.uid)"
            doneButton.isEnabled = true

            db.collection("DummyCollection").addSnapshotListener { (querySnapshot, error) in
                if let err = error {
                    print(err.localizedDescription)
                }
                guard let snapshot = querySnapshot else {
                    return
                }
                DispatchQueue.main.async {
                    self.dataCountLabel.text = "\(snapshot.count)"
                }
            }
        } else {
            // No user exists in the access group
            self.navigationItem.title = "No User"
        }
    }

Я ожидаю, что это должно быть возможно, но токен как-то становится недействительным в MainApp, и я не смог добраться до бэкэнда Firestore.

6.2.0 - [Firebase / Auth] [I-AUT000003] Автоматическое обновление токена переназначено на 01:00 из-за ошибки при предыдущей попытке обновления.

6.2.0 - [Firebase / Firestore] [I-FST000001] Не удалось связаться с бэкэндом Cloud Firestore. Соединение не удалось 1 раз. Самая последняя ошибка: произошла внутренняя ошибка, распечатайте и проверьте подробности ошибки для получения дополнительной информации.

1 Ответ

0 голосов
/ 04 июля 2019

Отвечая на мой собственный вопрос: это должно быть исправлено в следующем выпуске (Firebase 6.4.0) Подробности можно найти в этом PR 3239 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...