Ios 从Firebase用户获取providerData

Ios 从Firebase用户获取providerData,ios,facebook,firebase,swift3,firebase-authentication,Ios,Facebook,Firebase,Swift3,Firebase Authentication,我正在尝试在我的应用程序中添加取消链接提供程序功能。我想添加一个按钮,将用户的Facebook帐户与其Firebase用户帐户断开链接。Firebase文档说要使用providerData数组,但我不知道如何从中提取Facebook提供商ID。如果我只使用让providerID=self.currentUser.providerID,那么它只是默认为数组中的第一个提供者,而不管其类型是什么(Facebook、Twitter、Firebase等) 如何从providerData中提取Faceboo

我正在尝试在我的应用程序中添加取消链接提供程序功能。我想添加一个按钮,将用户的Facebook帐户与其Firebase用户帐户断开链接。Firebase文档说要使用providerData数组,但我不知道如何从中提取Facebook提供商ID。如果我只使用
让providerID=self.currentUser.providerID
,那么它只是默认为数组中的第一个提供者,而不管其类型是什么(Facebook、Twitter、Firebase等)

如何从providerData中提取Facebook提供商ID?这就是我试图获取它的方式,但它出现了错误(“无法将[String]类型的值下标为String类型的索引”):

编辑:

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

您正试图像访问字典一样访问
providerArray
,但这样做行不通。你要找的是专门针对Facebook的providerId。为了检索此信息,您需要获得Facebook的FIRAuthCredential。为了做到这一点,你应该使用。这将为您获取凭证,您可以从凭证中获取providerId,将其与当前用户的providerId数组相匹配,就像您正在做的那样。然后按您尝试的方式取消链接。

我只在存在Facebook身份验证令牌时显示取消链接按钮,从而解决了此问题。然后,当按下按钮时,只需输入“facebook.com”作为providerID:

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

谢谢你的回复!事实上,我只是通过将“facebook.com”作为providerID传入来解决这个问题。我只在Facebook身份验证令牌存在时才显示“取消链接”按钮,这很好。我可能不会使用这样的字符串,因为如果他们在API中更改了该值,那么您的代码将无法工作:/只是一个建议@詹姆斯,我会用我上面贴的逻辑来得到它。
FIRAuth.auth()?.currentUser?.unlink(fromProvider: "facebook.com" ) { (user, error) in