从Firebase用户

时间:2017-03-07 23:29:09

标签: ios facebook firebase swift3 firebase-authentication

我试图在我的应用中添加unlink provider功能。我想添加一个按钮,将用户的Facebook帐户与其Firebase用户帐户取消链接。 Firebase文档说使用providerData数组,但我不知道如何从中提取Facebook提供者ID。如果我只使用let providerID = self.currentUser.providerID,它只是默认为数组中的第一个提供者,无论类型是什么(Facebook,Twitter,Firebase等)。

如何从providerData中提取Facebook提供商ID?这就是我尝试获取它的方法,但它有错误("不能下标类型为[String]的值,索引类型为String"):

guard let providerData = self.currentUser?.providerData else {return}
        var providerArray: [String] = []
        for provider in providerData{
            providerArray.append(provider as! String)
        }
        var providerID: String = providerArray["Facebook"]
        FIRAuth.auth()?.currentUser?.unlink(fromProvider: providerID) { (user, error) in

编辑:

使用

修复
FIRAuth.auth()?.currentUser?.unlink(fromProvider: "facebook.com" ) { (user, error) in

2 个答案:

答案 0 :(得分:0)

您正试图像字典一样访问providerArray,但这不起作用。您正在寻找的是专门针对Facebook的providerId。要获取此信息,您需要获得Facebook的FIRAuthCredential。为此,您应该使用FIRFacebookAuthProvider。这将获得凭证,从您可以获取providerId的凭据,将其与您正在执行的当前用户的providerIds数组相匹配。然后在尝试时取消链接。

答案 1 :(得分:0)

我通过仅在显示Facebook身份验证令牌时显示取消链接按钮来修复此问题。然后,当按下按钮时,只需传入" facebook.com"作为providerID:

FIRAuth.auth()?.currentUser?.unlink(fromProvider: "facebook.com" ) { (user, error) in