Firebase で認証する一時的な匿名アカウントを、Firebase Authentication で作成して使用できます。一時的な匿名アカウントを使用すると、アプリに登録していないユーザーが、セキュリティ ルールで保護されているデータを使用できるようになります。匿名ユーザーがアプリに登録する場合は、ログイン認証情報を匿名アカウントにリンクすると、それ以後のセッションでも引き続き、保護されているデータを使用できます。
準備
- Firebase を JavaScript プロジェクトに追加します。
- アプリを Firebase プロジェクトに接続していない場合は、Firebase コンソールで接続します。
- 匿名認証を有効にします。
- Firebase コンソールで [Authentication] セクションを開きます。
- [ログイン方法] ページで [匿名] を有効にします。
Firebase 匿名認証を行う
ログアウトしたユーザーが Firebase での認証が必要なアプリ機能を使用する場合は、次の手順に沿って匿名でのユーザーのログインを行います。
signInAnonymously
メソッドを呼び出します。firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
ここではエラーの検出と対応もできます。エラーコードのリストについては、Auth のリファレンス ドキュメントをご覧ください。- エラーが発生せずに
signInAnonymously
メソッドが完了した場合、onAuthStateChanged
に登録されたオブザーバーがトリガーされ、匿名ユーザーのアカウント データをUser
オブジェクトから取得できます。firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
匿名アカウントを永久アカウントに変換する
匿名ユーザーがアプリへ登録した後、新しいアカウントの下で引き続き従来の作業を行えるようにしなければならない場合があります。たとえば、アプリへの登録前にユーザーがショッピング カートに追加したアイテムを、新しいアカウントのショッピング カートにも入れておく、といったケースです。手順は次のとおりです。
- ユーザーがアプリに登録したら、ユーザーの認証プロバイダのログインフローを行います(ただし、いずれかの
Auth.signInWith
メソッドを呼び出す手前まで)。たとえば、ユーザーの Google ID トークン、Facebook アクセス トークン、メールアドレスとパスワードを取得します。 新しい認証プロバイダの
AuthCredential
を取得します。Google ログイン
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Facebook ログイン
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
メールアドレスとパスワードによるログイン
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
ログイン ユーザーの
link
メソッドにAuthCredential
オブジェクトを渡します。auth.currentUser.linkWithCredential(credential) .then((usercred) => { var user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); });
link
の呼び出しが成功したら、ユーザーの新しいアカウントが匿名アカウントの Firebase データにアクセスできるようになります。
次のステップ
これで、ユーザーが Firebase で認証できるようになったので、Firebase ルールを使用して、Firebase データベースのデータへのユーザー アクセスを管理できます。