我试图在我的应用中添加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
答案 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