我正在使用这个文档在多个项目之间构建聊天
也就是说,我有2个应用程序/ Firebase项目。
应用程序A和应用程序B
现在我已经在App的Firestore中实现了简单的集合,它工作得很好,没有任何问题。
我的问题是当我想使用上面的文档从App访问App的Firestore时
我得到了错误 Domain=FIRFirestoreErrorDomain Domain=FIRFirestoreErrorDomain Code=7“缺少或不足的权限”
我附上了收藏的图片

规则是
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}我在应用程序B的ChatViewController上配置的代码如下
let secondaryOptions = FirebaseOptions(googleAppID: "1:27992087142:ios:2a4732a34787067a",
gcmSenderID: "27992087142")
secondaryOptions.apiKey = "AIzaSyBicqfAZPvMgC7NZkjayUEsrepxuXzZDsk"
secondaryOptions.projectID = "projectid-12345"
secondaryOptions.bundleID = "com.google.firebase.devrel.FiroptionConfiguration"
secondaryOptions.databaseURL = "https://myproject.firebaseio.com"
guard let secondary = FirebaseApp.app(name: "secondary")
else { assert(false, "Could not retrieve secondary app") }
// Retrieve a Real Time Database client configured against a specific app.
let _ = Database.database(app: secondary)
var collectionReference:CollectionReference?
collectionReference =
Firestore.firestore().collection("eclinic").document("1002").collection("chats")
collectionReference?.order(by: "timestamp", descending: false).addSnapshotListener { [self] (snapShot, err) in
if let error = err {
print("Error \(error)")
}else{
guard let snapDoc = snapShot?.documents else {
print("Return ")
return
}
}
}发布于 2021-01-04 18:25:26
通过研究这个文档链接,我克服了问题,代码如下所示
let secondaryOptions = FirebaseOptions(googleAppID: "1:27992087142:ios:2a4732a34787067a",
gcmSenderID: "27992087142")
secondaryOptions.apiKey = "AIzaSyBicqfAZPvMgC7NZkjayUEsrepxuXzZDsk"
secondaryOptions.projectID = "projectid-12345"
secondaryOptions.bundleID = "com.google.firebase.devrel.FiroptionConfiguration"
secondaryOptions.databaseURL = "https://myproject.firebaseio.com"
FirebaseApp.configure(name: "secondary", options: secondaryOptions)
// Retrieve a Real Time Database client configured against a specific app.
guard let secondary = FirebaseApp.app(name: "secondary")
else { assert(false, "Could not retrieve secondary app") }
let firestoreSecondary = Firestore.firestore(app: secondary)
var collectionReference:CollectionReference?
collectionReference =
firestoreSecondary.collection("eclinic").document("1002").collection("chats")
collectionReference?.order(by: "timestamp", descending: false).addSnapshotListener { [self] (snapShot, err) in
if let error = err {
print("Error \(error)")
}else{
guard let snapDoc = snapShot?.documents else {
print("Return ")
return
}
}
}https://stackoverflow.com/questions/65323387
复制相似问题