【发布时间】:2018-06-11 12:44:20
【问题描述】:
我正在为使用扩展的 iOS 应用程序创建 POC。扩展必须知道用户是否经过身份验证。不幸的是,包含应用程序和扩展程序是独立的应用程序,这意味着我必须在某处保留身份验证状态。
我不想存储用户电子邮件和密码,而是存储令牌并使用它进行身份验证。但是,尝试使用颁发的 token 和 providerId (Firebase) 进行身份验证似乎可行。
两个应用都在同一个 Firebase 项目下。
主应用程序(Firebase ios App1):
let userDefatuls = UserDefaults(suiteName: "group.test")
userDefatuls?.set(providerId!, forKey: "providerId")
userDefatuls?.set(value!, forKey: "token")
print("Saved value to user defaults \(value!)")
userDefatuls?.synchronize()
扩展应用程序(Firebase ios App2):
let userDefaults = UserDefaults(suiteName: "group.test")
let token = userDefaults?.string(forKey: "token")
let providerId = userDefaults?.string(forKey: "providerId")
print("What is the provider id \(providerId)")
let credential = OAuthProvider.credential(withProviderID: providerId!, accessToken: token!)
Auth.auth().signIn(with: credential) { (user, error) in
print("********* What is the user \(user) what is the error \(error)")
}
以上渲染:
什么是用户 nil 什么是错误:
Optional(Error Domain=FIRAuthErrorDomain Code=17999 "发生内部错误,打印并检查错误详细信息以获取更多信息。" UserInfo={error_name=ERROR_INTERNAL_ERROR, NSLocalizedDescription=发生内部错误,打印并检查错误详细信息以获取更多信息。NSUnderlyingError=0x600000447290 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey={ 代码 = 400; 错误 = ( { 域=全局; message = "INVALID_PROVIDER_ID : 不支持提供者 ID。"; 原因=无效; } ); message = "INVALID_PROVIDER_ID : 不支持提供者 ID。"; }}}})
你知道支持和工作吗?是不是我做错了什么?
【问题讨论】:
标签: firebase firebase-authentication