0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FirebaseAuthで、Googleログインした時、自動的にGoogleの名前をdisplayNameに登録させない方法

Last updated at Posted at 2024-10-18

取り急ぎの記事です。言いたいことは、

await FirebaseAuth.instance.currentUser!.updateProfile(displayName: null);

だと実際にはnullにしてくれなくて、

await FirebaseAuth.instance.currentUser!.updateProfile(displayName: "");

にすると、
FirebaseAuth.instance.currentUser!.displayName が nullになった、ということです。

void signInWithGoogle() async {
  try {
    // Googleサインインのためのインスタンスを作成し、サインインを開始する
    final GoogleSignInAccount? gUser = await GoogleSignIn().signIn();

// ユーザーがサインインをキャンセルした場合の処理
    if (gUser == null) {
      // サインインがキャンセルされたため、falseを返して処理を終了
      return false;
    }

// サインインに成功した場合、Google認証情報を取得する
    final GoogleSignInAuthentication gAuth = await gUser.authentication;

// Firebaseにログインするための資格情報を作成する
    final credential = GoogleAuthProvider.credential(
      accessToken: gAuth.accessToken, // Googleから取得したアクセストークン
      idToken: gAuth.idToken,         // Googleから取得したIDトークン
    );

// FirebaseAuthを使用して、取得した資格情報を使ってサインインを行う
    final userCredential = await FirebaseAuth.instance.signInWithCredential(credential);

// サインイン処理が成功すると、FirebaseAuth.instance.currentUserにユーザー情報が設定される
    // 初回サインインの場合のみ、displayNameをnullに設定する
    if (userCredential.additionalUserInfo!.isNewUser) {
      await FirebaseAuth.instance.currentUser!.updateProfile(displayName: "");
      await FirebaseAuth.instance.currentUser!.reload(); // ユーザー情報を再読み込み
    }
  } catch (e) {
    log('Googleサインインエラー: $e');
  }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?