Firebase中是否有用于“自定义身份验证系统”的凭据?

时间:2020-09-21 17:15:34

标签: swift firebase firebase-authentication

我正在使用用户的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以及其他几个凭据,但没有自定义提供程序。

是否可以根据自定义令牌创建凭证?

2 个答案:

答案 0 :(得分:0)

从理论上讲,您在文档中看到的示例不是唯一的选择。查看link()的API文档:

将来自第三方身份提供者的用户帐户与此用户相关联,并返回其他身份提供者数据。

在Swift中,它的签名是这样的:

func链接(具有凭据:FIRAuthCredential,完成:(((AuthDataResult ?, Error?)-> Void)?= nil)

它需要任何FIRAuthCredential,其中有许多子类可用。其中之一是OAuthCredential。如果您有自定义令牌,请尝试使用OAuthProvider.crediential()创建证书并将其链接到帐户。

答案 1 :(得分:0)

Doug StevensonFrank 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