在 iOS 中访问其他项目 Firestore 数据
Posted
技术标签:
【中文标题】在 iOS 中访问其他项目 Firestore 数据【英文标题】:Access Other Projects Firestore Data in iOS 【发布时间】:2020-12-16 12:35:08 【问题描述】:我正在使用 Firestore 在多个项目之间建立聊天,使用此 Doc 即我有 2 个应用程序/Firebase 项目。 应用 A 和应用 B 现在我已经在 App A 的 Firestore 中实现了简单的集合,它工作正常,没有任何问题。 我的问题是当我想使用上述文档从 App B 访问 App A 的 Firestore 我收到错误Error Domain=FIRFirestoreErrorDomain Code=7“权限缺失或不足 我附上了收藏的图片 规则是
service cloud.firestore
match /databases/database/documents
match /document=**
allow read, write: if true;
我在App 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
【问题讨论】:
你确定这些规则是在数据所在的app A的项目上设置的吗?安全规则仅适用于部署它们的一个项目,不适用于其他项目。 @DougStevenson 是的,我正在使用我的数据所在的 App A 的 Firestore,请建议我应该怎么做才能从 App B 访问它 【参考方案1】:探索这个文档link我能够克服我的问题,代码如下
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
【讨论】:
以上是关于在 iOS 中访问其他项目 Firestore 数据的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Firestore iOS:如何将图像保存到 Firestore 中的集合中?
我正在尝试从我的 ios Swift 项目中的 Firestore 数据库中获取数据
如何在 Swift 中从 Cloud FireStore Firebase 访问特定字段
Firebase Firestore:无法访问Firestore后端(仅限Android)
我无法从我的颤振项目中访问我的 firebase/firecloud 数据。我得到:无法访问 Cloud Firestore 后端。连接失败 1 次