从firebase用户获取提供者



我正在尝试在我的应用中添加UNLINK提供商功能。我想添加一个按钮,该按钮可以从其Firebase用户帐户中链接用户的Facebook帐户。Firebase文档说要使用ProviderData数组,但我不知道如何从中提取Facebook提供商ID。如果我只使用let providerID = self.currentUser.providerID,则它只是默认为数组中的第一个提供商,无论类型是什么(Facebook,Twitter,Firebase等)。

如何从ProviderData中提取Facebook提供商ID?这就是我尝试获取它的方式,但它错误("无法用索引类型的字符串类型的subscript subscript"):

):
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

您正在尝试像词典一样访问 providerArray,但行之有效。您正在寻找的是专门针对Facebook的ProviderID。为了检索这一点,您需要获得Facebook的firauthcredential。为此,您应该使用FirefaceBookauthProvider。这将使您获得凭据,从凭据您可以获取ProviderID的凭据,将其与当前用户的ProviderID数匹配,就像您所做的那样。然后在尝试执行时取消链接。

我仅通过显示Facebook auth令牌的情况下仅显示UNLINK按钮来修复此操作。然后,按下按钮时,只需将" Facebook.com"作为ProviderID传递:

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

最新更新