ios - Swift:在应用程序之间共享身份验证状态
问题描述
在我的应用程序中,用户可以使用 Apple、Google、Facebook 和电子邮件登录Firebase
。我也有一个Share Extension
,我想auth-state
从 Main-App 共享,所以我也可以Auth.auth.currentUser
在我ShareExtension
的内部调用,以便用户可以访问Cloud-Firestore
。
现在我知道Firebase提供了这个文档。但是我不确定第 2 步:
do {
try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
} catch let error as NSError {
print("Error changing user access group: %@", error)
}
我到底要在哪里称呼这个?
编辑:
主应用:
更新:
error
之前调用上面的代码时会抛出这个signIn
:
更改用户访问组时出错:%@ Error Domain=FIRAuthErrorDomain Code=17995 “访问钥匙串时发生错误。@c NSError.userInfo 字典中的 @c NSLocalizedFailureReasonErrorKey 字段将包含有关遇到的错误的更多信息” UserInfo={FIRAuthErrorUserInfoNameKey =ERROR_KEYCHAIN_ERROR, NSLocalizedFailureReason=SecItemCopyMatching (-34018), NSLocalizedDescription=访问钥匙串时出错。@c NSError.userInfo 字典中的 @c NSLocalizedFailureReasonErrorKey 字段将包含有关遇到的错误的更多信息}
解决方案
在文档中,您可以看到必须遵循的流程。首先,在应用程序中任何有登录过程的地方,您都必须添加以下代码行:
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
推荐阅读
- javascript - 如何使用模板从另一个 IIFE 访问变量?
- java - 使用 HTMLUNIT 从标签之间的 HTML 页面中提取数据
- pug - 从快速路线呈现为视图时,mdbootsrap 未显示
- java - ArrayList 抛出 java.lang.ClassCastException
- angularjs - 一个应用程序可以使用 3 个端口吗?
- css - css 加载器的模块解析失败错误
- python-3.x - FileNotFoundError: [WinError 3] 系统找不到指定的路径:
- database - Wordpress 数据库建立数据库连接时出错
- java - 如何实现大量调用oracle DB操作
- java - 为什么我们要像这样打印变量值?