我正在使用用户的WordPress ID使用自定义令牌将用户登录到我的应用中。
Auth.auth().signIn(withCustomToken: customToken ?? "") { (user, error) in
// ...
}
可以,但是我需要更新规则,以防止用户写入数据库。这适得其反,因为我想跟踪他们查看的产品,等等。
我想在应用打开时匿名签署用户。
Auth.auth().signInAnonymously() { (authResult, error) in
// ...
}
我需要将匿名用户链接到WordPress用户。不幸的是,根据文档https://firebase.google.com/docs/auth/ios/account-linking,用户需要与凭据链接,但是提供的凭据是GoogleAuthProvider,FacebookAuthProvider和EmailAuthProvider以及其他几个凭据,但没有自定义提供程序。
是否可以根据自定义令牌创建凭证?
答案 0 :(得分:0)
从理论上讲,您在文档中看到的示例不是唯一的选择。查看link()的API文档:
将来自第三方身份提供者的用户帐户与此用户相关联,并返回其他身份提供者数据。
在Swift中,它的签名是这样的:
func链接(具有凭据:FIRAuthCredential,完成:(((AuthDataResult ?, Error?)-> Void)?= nil)
它需要任何FIRAuthCredential,其中有许多子类可用。其中之一是OAuthCredential。如果您有自定义令牌,请尝试使用OAuthProvider.crediential()创建证书并将其链接到帐户。
答案 1 :(得分:0)
在Doug Stevenson和Frank van Puffelen注释之后,我能够使用凭据链接匿名用户帐户。
我有我的原始customToken
guard let customToken = result?.data as? String else { return }
因为当应用程序首次打开时,用户现在匿名登录,所以我现在有一个用户。
guard let authUser = Auth.auth().currentUser else { return }
我从用户那里获得了提供者ID。
let providerId = authUser.providerID
现在有了提供者ID,我就可以使用OAuthProvider获得凭据
let credential = OAuthProvider.credential(withProviderID: providerId, accessToken: customToken)
现在我可以将用户链接到匿名用户。
authUser.link(with: credential) { (result, error) in