質問: FIRFacebookAuthProvider.credential(withAccessToken: (result?.token.tokenString)!) //現在のユーザー( googleログインはすでにfirebaseに認証が渡されている)を上記のfacebook認証とリンクさせる FIRAuth.auth()?.currentUser?.link(with: credential){(user,error) in if (error != nil){ print("facebookに既存認証をリンクするところでエラー!error:\(error)") } } ``` ただしこれでは明らかに不便で、実際にはユーザーは、facebook/twitter/googleのどれに最初にログインしてくれるかわからないので、すでにこれら3つの中でfirebaseにログイン認証を渡しているかの判断分岐をいれる必要があると思っておりますが、その方法がわかりません。 おそらく、かなり基本的なことで、firebase公式にも書いてないのだと思いますが。。 なお、上記例で、すでにgoogleログインがすでに現在時点で行われているかはもちろんわかるのですが、「過去にgoogleログインされて、よってfirebaseに認証情報を渡されたことがあるものの、今現在は当該googleログインはログアウトされているユーザーがfacebookログインしようとするとき」の判定したい、という趣旨です。 わかりにくくて恐縮ですが、先人の方のお知恵を拝借できればと存じます。
回答: 失礼いたしました、自己解決いたしました。公式の通り(https://firebase.google.com/docs/auth/ios/manage-users)以下でprovidersにtwitter.comとかfacebook.comとかの情報取得でき、それで判別可能でした。 var providers: [String] = [] //既存プロバイダー情報の取得 if let user = FIRAuth.auth()?.currentUser { for profile in user.providerData{ providers.append(profile.providerID) } }