Firebase で匿名認証を使用すると、ユーザは何の情報も入力せずに Firebase のセキュリティルールに制御されているデータにアクセスできるようになるので、導入することでサービスの利用者が増えるのではないかと思いました。
Authenticate with Firebase Anonymously Using JavaScript
上記の公式ドキュメントを読みつつ、実装してみたのですが、「匿名アカウントを永久アカウントに変換する」部分で躓いたので、記事を残しておこうと思います。
匿名認証によるログイン処理の実装
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
おわりに
公式ドキュメントの方法がよくわからなかったので、わかる方がいらっしゃいましたら、教えていただけると幸いです。
コメント