我正在尝试在我的应用中添加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