【发布时间】:2019-10-22 17:07:56
【问题描述】:
我正在 iOS 中设置shareExtension,并希望使用FirebaseSDK 直接上传数据,而不是使用AppGroups。这按预期工作,但 1 小时后 UserToken 失效,我无法再访问 Firestore 后端。
我正在使用FirebaseSDK (6.2.0) 并启用钥匙串共享来访问当前登录用户。我在 MainApp 和 shareExtension 中有相同的 Google-Plist。数据也从shareExtension 正确上传,并通过 MainApp 中的snapshotListener 更新。
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 次。最近的错误:发生了内部错误,请打印并检查错误详细信息以获取更多信息。
【问题讨论】:
标签: swift firebase firebase-authentication google-cloud-firestore share-extension