设置
com.teamName.appName
group.com.teamName.appName
com.teamName.appName
try Auth.auth().useUserAccessGroup("group.com.teamName.appName")
问题
Error Domain=FIRAuthErrorDomain Code=17995 "An error occurred when accessing the keychain."
尝试修复
group.com.teamName.appName
更改为 teamId.group.com.teamName.appName
com.teamName.AppName
实际上将其在权利中设置为 $(AppIdentifierPrefix)com.teamName.AppName
b.假设应用程序组可能需要针对 macOS 进行类似的处理useUserAccessGroup
调用:
try Auth.auth().useUserAccessGroup("teamId.group.com.teamName.appName")
c. 调整了整个代码库中对应用程序组的任何其他引用结果
问题
如何解决此问题以使 iOS 和 macOS 应用程序都编译、运行并保留其身份验证状态?有没有办法在同一目标中为 iOS 和 macOS 使用不同的应用程序组标识符,或者我应该考虑分离目标?
您在 macOS 上遇到的错误“Error Domain=FIRAuthErrorDomain Code=17995 '访问钥匙串时发生错误'”与访问钥匙串的问题有关。查看这个 github 问题。
在 iOS 中,应用程序组 ID 必须以前缀“group”开头。这是由 Apple 的配置门户强制执行的,任何偏离此格式的行为都将导致物理设备上的编译错误。 虽然 macOS 没有对配置文件中的应用程序组 ID 强制执行同样严格的要求,但建议使用您的团队 ID 来启动应用程序组 ID,以确保唯一性。但是,macOS 在权利文件中构建应用程序组 ID 方面提供了更大的灵活性。
尝试以下步骤:
<TEAM_ID>.<APP_NAME>.<GROUP_NAME>