【问题标题】:Swift: Share Auth state between appsSwift:在应用程序之间共享身份验证状态
【发布时间】:2021-02-09 17:07:56
【问题描述】:

在我的应用程序中,用户可以使用Firebase 使用 Apple、Google、Facebook 和电子邮件登录。我还有一个Share Extension,我想从主应用程序中分享auth-state,这样我也可以在我的ShareExtension 中调用Auth.auth.currentUser,这样用户就可以访问Cloud-Firestore

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

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

我应该在哪里调用它?

编辑:

主应用:

分享扩展:

更新:

signIn之前调用上面的代码时会抛出这个error

更改用户访问组时出错:%@ Error Domain=FIRAuthErrorDomain Code=17995 “访问钥匙串时发生错误。@c NSError.userInfo 字典中的 @c NSLocalizedFailureReasonErrorKey 字段将包含有关遇到的错误的更多信息” UserInfo ={FIRAuthErrorUserInfoNameKey=ERROR_KEYCHAIN_ERROR, NSLocalizedFailureReason=SecItemCopyMatching (-34018), NSLocalizedDescription=访问钥匙串时出错。 @c NSError.userInfo 字典中的@c NSLocalizedFailureReasonErrorKey 字段将包含有关遇到的错误的更多信息}

【问题讨论】:

  • 我猜在 didFinishLaunchingWithOptions 内部(以及扩展中的类似方法)。紧接着FirebaseApp.configure()
  • @DimaRostopira 试过了,但是当在我的Share Extension 中调用let userID = Auth.auth().currentUser!.uid 时,它总是nil...
  • 确保您使用正确的组 ID 并为扩展启用了应用组
  • @DimaRostopira 正确的组 id 到底是什么意思?

标签: ios swift firebase firebase-authentication


【解决方案1】:

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

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

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

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

然后在其中一个app中,你要执行这句话:

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

你可以把它放在上面的第一个代码之后。然后您将能够像这样在两个应用程序中访问用户:

var user = Auth.auth().currentUser

【讨论】:

  • by 同一个Access Group,你是指App Group还是Keychain Group?顺便说一句,我更新了我的问题
  • 我的意思是,这部分“TEAMID.com.example.group1”对于两个应用程序必须相同。并且当你在任何应用程序中登录时,你将能够访问 Auth.auth() 的全部内容,因此你可以检查用户、状态、状态等......
  • 您是否在更改组时从设备中删除了应用程序并在重建之前明确了构建文件夹?这是一个愚蠢的问题,但有时确实是个问题。
  • 你看我更新的问题了吗?错误信息?我不明白...
  • 嗯,错误是因为钥匙串访问的配置,我认为最好遵循这个指南而不是我试图解释:) 看看这个指南老兄:developer.apple.com/documentation/security/keychain_services/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 2018-01-28
相关资源
最近更新 更多