Swift:在应用之间共享身份验证状态

时间:2020-10-27 12:07:15

标签: ios swift firebase firebase-authentication

在我的应用程序内部,用户可以使用Firebase用Apple,Google,Facebook和电子邮件登录。我也有一个Share Extension,我想从主应用程序中共享auth-state,所以我也可以在我的Auth.auth.currentUser中调用ShareExtension,以便用户可以访问{{ 1}}。

现在我知道 Firebase 提供了此documentation。但是我不确定第2步

Cloud-Firestore

我到底该在哪里打电话?

编辑:

主应用程序:

enter image description here

共享扩展名: enter image description here

更新

do { try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1") } catch let error as NSError { print("Error changing user access group: %@", 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字段将包含有关遇到的错误的更多信息}

1 个答案:

答案 0 :(得分:0)

在文档中,您可以看到必须遵循的流程。首先,在应用程序中的任何地方,只要您具有登录过程,就必须添加以下代码行:

do {
  try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
} catch let error as NSError {
  print("Error changing user access group: %@", error)
}

您可以将它们添加到委托的didFinishLaunchingWithOptions函数中,但可以在任何需要的地方使用它。

在另一个应用程序中,您必须添加相同的代码。这两个应用必须具有相同的访问组,对吗?

然后在一个应用程序中,您必须执行以下语句:

Auth.auth().signInAnonymously { result, error in
  // User signed in
}

您可以将其放在上面的第一个代码之后。然后,您将可以在两个应用程序中访问用户,如下所示:

var user = Auth.auth().currentUser