使用Firebase在Share Extension中对用户进行身份验证

时间:2020-11-03 18:28:53

标签: ios firebase google-cloud-firestore firebase-authentication keychain

我已经和他奋斗了很长时间。我有一个应用,还有一个Share Extension

Share Extension内,用户需要进行身份验证,以便他可以向我的Cloud-Firestore发出请求(我设置了安全规则,因此只有授权用户才能访问数据)。但是,我无法在我的Share Extension中对用户进行身份验证。

我已经签出了Firebase Documentationthis特殊问题,但这对我没有帮助。

在我的情况下,用户可以使用电子邮件,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相同。

我真的在这个话题上挣扎,找不到适合我的逐步指南。我觉得我缺少了什么,只是调用上面的代码对我没有任何帮助。如果有人可以帮助我,我将不胜感激!

如果不清楚,或者您需要更多信息,请告诉我!

0 个答案:

没有答案