Firebase でユーザーを管理する

ユーザーを作成する

createUserWithEmailAndPassword メソッドを呼び出すか、Google ログインFacebook ログインなどのフェデレーション ID プロバイダを使用してユーザーが初めてログインすると、Firebase プロジェクトで新しいユーザーが作成されます。

Firebase コンソールの [認証] セクションにある [ユーザー] ページで、または Admin SDK を使用して、パスワードで認証される新しいユーザーを作成することもできます。

現在ログインしているユーザーを取得する

現在ログインしているユーザーを取得するには、Auth オブジェクトでオブザーバーを設定することをおすすめします。

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

オブザーバーを使うと、現在ログインしているユーザーを取得するときに Auth オブジェクトが中間状態(初期化など)ではないことを確認できます。signInWithRedirect を使用する場合、onAuthStateChanged オブザーバーは getRedirectResult が解決された後にトリガーされます。

currentUser プロパティを使用しても、現在ログインしているユーザーを取得できます。ユーザーがログインしていない場合、currentUser は null です。

var user = firebase.auth().currentUser;

if (user) {
  // User is signed in.
} else {
  // No user is signed in.
}

ユーザーのプロフィールを取得する

ユーザーのプロフィール情報を取得するには、User のインスタンスのプロパティを使用します。次に例を示します。

var user = firebase.auth().currentUser;
var name, email, photoUrl, uid, emailVerified;

if (user != null) {
  name = user.displayName;
  email = user.email;
  photoUrl = user.photoURL;
  emailVerified = user.emailVerified;
  uid = user.uid;  // The user's ID, unique to the Firebase project. Do NOT use
                   // this value to authenticate with your backend server, if
                   // you have one. Use User.getToken() instead.
}

ユーザーのプロバイダ別のプロフィール情報を取得する

ユーザーにリンクされているログイン プロバイダからプロフィール情報を取得する場合は、providerData プロパティを使用します。次に例を示します。

var user = firebase.auth().currentUser;

if (user != null) {
  user.providerData.forEach(function (profile) {
    console.log("Sign-in provider: "+profile.providerId);
    console.log("  Provider-specific UID: "+profile.uid);
    console.log("  Name: "+profile.displayName);
    console.log("  Email: "+profile.email);
    console.log("  Photo URL: "+profile.photoURL);
  });
}

ユーザーのプロフィールを更新する

updateProfile メソッドを使用して、ユーザーの基本的なプロフィール情報(ユーザーの表示名とプロフィール写真の URL)を更新できます。次に例を示します。

var user = firebase.auth().currentUser;

user.updateProfile({
  displayName: "Jane Q. User",
  photoURL: "https://example.com/jane-q-user/profile.jpg"
}).then(function() {
  // Update successful.
}, function(error) {
  // An error happened.
});

ユーザーのメールアドレスを設定する

updateEmail メソッドを使用して、ユーザーのメールアドレスを設定できます。次に例を示します。

var user = firebase.auth().currentUser;

user.updateEmail("user@example.com").then(function() {
  // Update successful.
}, function(error) {
  // An error happened.
});

ユーザーに確認メールを送信する

sendEmailVerification メソッドを使用して、ユーザーにアドレス確認メールを送信できます。次に例を示します。

var user = firebase.auth().currentUser;

user.sendEmailVerification().then(function() {
  // Email sent.
}, function(error) {
  // An error happened.
});

Firebase コンソールの [Authentication] セクションにある [メール テンプレート] ページで使用されるメール テンプレートをカスタマイズできます。Firebase ヘルプセンターでメール テンプレートについての記事をご覧ください。

ユーザーのパスワードを設定する

updatePassword メソッドを使用して、ユーザーのパスワードを設定できます。次に例を示します。

var user = firebase.auth().currentUser;
var newPassword = getASecureRandomPassword();

user.updatePassword(newPassword).then(function() {
  // Update successful.
}, function(error) {
  // An error happened.
});

パスワードの再設定メールを送信する

sendPasswordResetEmail メソッドを使用して、ユーザーにパスワードの再設定メールを送信できます。次に例を示します。

var auth = firebase.auth();
var emailAddress = "user@example.com";

auth.sendPasswordResetEmail(emailAddress).then(function() {
  // Email sent.
}, function(error) {
  // An error happened.
});

Firebase コンソールの [Authentication] セクションにある [メール テンプレート] ページで使用されるメール テンプレートをカスタマイズできます。Firebase ヘルプセンターでメール テンプレートについての記事をご覧ください。

Firebase コンソールからパスワードの再設定メールを送信することもできます。

ユーザーを削除する

delete メソッドを使用して、ユーザーのアカウントを削除できます。次に例を示します。

var user = firebase.auth().currentUser;

user.delete().then(function() {
  // User deleted.
}, function(error) {
  // An error happened.
});

Firebase コンソールの [Authentication] セクションにある [ユーザー] ページでユーザーを削除することもできます。

ユーザーを再認証する

アカウントの削除メインのメールアドレスの設定パスワードの変更といったセキュリティ上重要な操作を行うには、ユーザーが最近ログインしている必要があります。ユーザーが最近ログインしていない場合、このような操作を行うと失敗し、エラーになります。 このような場合は、ユーザーから新しいログイン認証情報を取得して reauthenticate に渡し、ユーザーを再認証します。次に例を示します。

var user = firebase.auth().currentUser;
var credential;

// Prompt the user to re-provide their sign-in credentials

user.reauthenticate(credential).then(function() {
  // User re-authenticated.
}, function(error) {
  // An error happened.
});

ユーザー アカウントをインポートする

Firebase CLI の auth:import コマンドを使用して、ユーザー アカウントをファイルから Firebase プロジェクトにインポートできます。次に例を示します。

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。