LoginSignup
2
4

More than 3 years have passed since last update.

Firebase 匿名認証の永続性を変更して、ずっと匿名でのログイン状態にする

Last updated at Posted at 2020-07-21

はじめに

Firebaseの匿名認証については下の記事を参考に。
Firebase 匿名認証でログインしたユーザーか判別する方法

この記事ではFirebase 匿名認証でログインしたユーザーを永続的にログイン状態にする方法を記録する。

環境

Ioincで開発したモバイルアプリ
・Angularとangularfire
・シミュレーターと実機でテスト

Firebase 匿名認証の永続性

Firebase JS SDK を使用すれば、認証状態をどの程度維持するかを指定できます。たとえば、ログインしたユーザーが明示的にログアウトするまで無期限に維持したり、ウィンドウを閉じたときやページをリロードしたときにクリアしたりできます。

認証状態の永続性

「永続性」ってなんか難しい言葉使ってるけど、ログイン状態がどの程度保持されるか、と同じ意味で問題ないかと。

Firebaseの匿名認証では、何も設定していないといつ認証状態が消えるのか(僕には)わかりません。。
ブラウザでの感覚は1日経ってまた匿名認証でログインすると、新しい匿名アカウントになってた。1日以内なら、何度も匿名認証でログインしても同一の匿名アカウントだった。

setPersistenceで永続性を変更できる

auth.service.ts
import * as firebase from 'firebase/app';
import { AngularFireAuth } from '@angular/fire/auth';
import { NativeStorage } from '@ionic-native/native-storage/ngx';
import { Router } from '@angular/router';


@Injectable({
  providedIn: 'root'
})
export class AuthService {
  anoUser = null;

 constructor(
    private afAuth: AngularFireAuth,
    private nativeStorage: NativeStorage,
    private router: Router,
  ) {
  }


anonLogin() {
    this.afAuth.auth.signInAnonymously().then((res) => {
      this.anoUser = res.user;
      console.log('匿名認証した。uidはこちら ' + this.anoUser.uid);
// Persistence.LOCALで永続的にログイン状態にする
      this.afAuth.auth.setPersistence(firebase.auth.Auth.Persistence.LOCAL);
      this.nativeStorage.setItem('user_data', {
        uid: res.user.uid,
      });
      this.router.navigateByUrl('/home');
    });
  }

}
signup.page.ts
import { Component, OnInit } from '@angular/core';
import { AuthService } from './auth.service';

@Component({
  selector: 'app-signup',
  templateUrl: './signup.page.html',
  styleUrls: ['./signup.page.scss']
})
export class SignupPage implements OnInit {

constructor(
    private authService: AuthService,
  ) {
  }

  ngOnInit() {}

anonLogin() {
    this.authService.anonLogin();
  }

}

Persistence.LOCALで永続的にログイン状態にできるようなので、僕はこちらを使用。

ブラウザ ウィンドウを閉じたり React Native でアクティビティが破棄されたりした場合でも、状態が維持されることを示します。 この状態をクリアするには、明示的なログアウトが必要です。Firebase Auth のウェブ セッションは単一のホストを生成元とするため、単一のドメインでのみ永続化されることに注意してください。

サポートされている認証状態の永続性のタイプ

Webアプリなんかの場合はPersistence.SESSIONを使っても良いかも。

最後に

なんかよくわからんが、正常に匿名認証のログインが無期限に維持されてるっぽいので、、、:smile:

2
4
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
2
4