📧

[Flutter × FirebaseAuth] メールアドレスの変更

2022/07/29に公開

はじめに

https://firebase.google.com/docs/auth/web/manage-users?hl=ja

公式ドキュメントによると下記の通り記載されています。

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

実装してみると難しい内容ではなかったのですが、
本件に関する記事があまり見つからなかった(簡単な内容だから記事が少ないのか、検索ワードのセンスに欠けるのか。。。)ため、
自分で記事にしちゃおうと思います。

手順

1.signInWithEmailAndPassword

前回ログイン時から一定時間経過しているとエラーとなるため、先にログインしてあげます。

FirebaseAuth.instance.signInWithEmailAndPassword(email: email!, password: password!);

2.updateEmail

今回はメールアドレスの変更のみのため、以下の通り「updateEmail」を使用します。

FirebaseAuth.instance.currentUser!.updateEmail(newEmail!);

結果

手順1、2でメールアドレスが変更できます。
ざっくり以下コード

  // 変更前のemailは別途取得しておく必要あり
   String? email;
  
  // 変更後のemail
  String? newEmail;
  TextEditingController newEmailController = TextEditingController();

  // パスワード
  String? password;
  TextEditingController passwordController = TextEditingController();
  
  // ①update()の前に実行しログイン
  Future login() async {
    password = passwordController.text;
    await FirebaseAuth.instance.signInWithEmailAndPassword(email: email!, password: password!);
  }

  // ②login()後に実行
  Future update() async {
    newEmail = newEmailController.text;
    await FirebaseAuth.instance.currentUser!.updateEmail(newEmail!);
  }

まとめ

入力時のバリデーションなど、他考慮する必要がありますが、
それは別の課題になりますので別途記事作成していこうと思います。

Discussion