kz’s blog

興味のあることについて書いていきます。

Firebase の匿名アカウントを認証済みアカウントにリンクさせる

はじめに

Firebase で匿名認証を使用すると、ユーザは何の情報も入力せずに Firebase のセキュリティルールに制御されているデータにアクセスできるようになるので、導入することでサービスの利用者が増えるのではないかと思いました。

firebase.google.com

上記の公式ドキュメントを読みつつ、実装してみたのですが、「匿名アカウントを永久アカウントに変換する」部分で躓いたので、記事を残しておこうと思います。

匿名認証によるログイン処理の実装

firebase
  .auth()
  .signInAnonymously()
  .then(() => {
    console.log('success')
  })

この処理を実行することで、匿名アカウントとして Firebase Authentication に登録されます。

なお、匿名アカウントの状態でログアウト処理をしてしまうと、二度とそのアカウントにアクセスできないっぽいです。

認証済みアカウントにリンクさせる処理の実装

// Twitter の例
const provider = new firebase.auth.TwitterAuthProvider()
firebase
  .auth()
  .currentUser.linkWithPopup(provider)
  .then(
    () => {
      console.log('success')
    },
    error => {
      console.log(`failure: ${error}`)
    }
  )

公式ドキュメントのやり方とちょっと違います。

匿名アカウントでログインしている状態で、firebase.auth().currentUser.linkWithPopup(provider)を実行することで、そのアカウントがproviderのサービスにリンクされるようになります。

ちなみに、現在ログイン中のアカウントが匿名アカウントかどうかを判定する場合の処理は以下です。

firebase.auth().currentUser.isAnonymous

おわりに

公式ドキュメントの方法がよくわからなかったので、わかる方がいらっしゃいましたら、教えていただけると幸いです。

また、上記処理を実装したサービスは以下になります。

  • サービス URL

ge-reki.com

  • 関連記事

www.kz62.net