Firebaseで認証したユーザーを取得できない

Firebaseをいろいろいじり中。

github.com

Googleでの外部認証機能の実装が出来たので、ついでにGithubでの認証とかも試してみようかと思った段階で詰まった。

firebase.auth().onAuthStateChanged(user => {
  if (user) {
    this.setUser(user.uid)
    this.$router.push('/')
  } else {
    this.setUser(null)
    this.isLoading = false
  }
})

Firebaseの認証情報取得としてはよくあるコードのはずだが、何故かGithub認証を使うとuserがnullになった。

検索をかけてもよく分からずとりあえずGoogleで認証したユーザーを一度削除してみるとちゃんとGithub認証できるようになった。

よく調べていなかったが、Firebaseはデフォルトだと一つのメールアドレスにつき一つのアカウントしか作成できないが、今回認証で使用しようとしていたアカウントはGoogleGithubも同じメールアドレスを使用していたため、うまくGithubのアカウントによる認証が出来ていなかったらしい。
恐らくどこかの段階でエラーが出ているんだと思うが、うまくエラーハンドリング出来ていなかったので気が付けなかった。

ちなみにメールアドレスAを使用しているGithubアカウントによる認証の後同じメールアドレスAを使用したGoogleアカウントの認証を実行することはできたが、逆の流れ(Google認証の後Github認証実行)は出来なかった。なんか決まりがあるんだろうか。