gpt4 book ai didi

ios - Swift:在应用程序之间共享身份验证状态

转载 作者:行者123 更新时间:2023-12-05 06:58:42 25 4
gpt4 key购买 nike

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

现在我知道有这个 documentationFirebase 提供。但是我不确定第 2 步:

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

我到底应该在哪里调用它?

编辑:

主应用:

enter image description here

共享扩展: enter image description here

更新:

signIn 之前调用上面的代码时会抛出此 error:

Error changing user access group: %@ Error Domain=FIRAuthErrorDomain Code=17995 "An error occurred when accessing the keychain. The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary will contain more information about the error encountered" UserInfo={FIRAuthErrorUserInfoNameKey=ERROR_KEYCHAIN_ERROR, NSLocalizedFailureReason=SecItemCopyMatching (-34018), NSLocalizedDescription=An error occurred when accessing the keychain. The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary will contain more information about the error encountered}

最佳答案

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

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

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

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

然后在其中一个应用程序中,你必须执行这句话:

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

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

var user = Auth.auth().currentUser

关于ios - Swift:在应用程序之间共享身份验证状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64554131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com