我已经和他奋斗了很长时间。我有一个应用,还有一个Share Extension
。
在Share Extension
内,用户需要进行身份验证,以便他可以向我的Cloud-Firestore
发出请求(我设置了安全规则,因此只有授权用户才能访问数据)。但是,我无法在我的Share Extension
中对用户进行身份验证。
我已经签出了Firebase Documentation和this特殊问题,但这对我没有帮助。
在我的情况下,用户可以使用电子邮件,Google,Facebook和Apple 登录。
我尝试在调用didFinishLaunchingWithOptions
之后立即在App-Delegate ShareExtension
内部和viewDidLoad
内部Firebase.configure()
中调用此方法:
do {
try Auth.auth().useUserAccessGroup(UserDefaults.Keys.accessGroupKey)
} catch let error as NSError {
print("Error changing user access group: %@", error)
}
但是当尝试在我的Auth.auth.currentUser!
内部调用ShareExtension
时,它总是失败并显示一个nil-error
。
更新:
在干净的模拟器设备上调用上述代码时,它失败,并显示以下error
:
更改用户访问组时出错:%@ Error Domain = FIRAuthErrorDomain代码= 17995“访问钥匙串时发生错误。@c NSError.userInfo词典中的@c NSLocalizedFailureReasonErrorKey字段将包含有关遇到的错误的更多信息” UserInfo = {FIRAuthErrorUserInfoNameKey = ERROR_KEYCHAIN_ERROR,NSLocalizedFailureReason = SecItemCopyMatching(-34018),NSLocalizedDescription =访问钥匙串时发生错误。 @c NSError.userInfo字典中的@c NSLocalizedFailureReasonErrorKey字段将包含有关遇到的错误的更多信息}
在签名和功能中,我已为具有相同标识符的应用程序和扩展程序启用了应用程序组。
钥匙串共享也是如此。我在此处使用的标识符与上面的代码中的UserDefautls.Keys.accessGroupKey
相同。
我真的在这个话题上挣扎,找不到适合我的逐步指南。我觉得我缺少了什么,只是调用上面的代码对我没有任何帮助。如果有人可以帮助我,我将不胜感激!
如果不清楚,或者您需要更多信息,请告诉我!