0

Firebaseのマニュアルには、ログインプロセス中にユーザ認証情報が保存されていないことが記載されています。しかし、私はそれらが内部的にどのように扱われているかについていくつか質問があります。AndroidのFirebaseの認証状態管理

  • Firebase Android SDKは認証状態をメモリに保持しますか? その場合、その目的(シングルトン、弱参照など)にはどのようなデザインやパターンが使用されていますか?

  • または、ref.getAuth()メソッドが呼び出されるたびにサーバーへの呼び出しを実行しますか?

ありがとう!

答えて

1

自分でhow to store such user data in your databaseを説明しているドキュメントのセクションを参照しているものとします。

ユーザを認証すると、プロファイルまたはユーザ状態はFirebaseデータベースに保存されません。

Firebase認証は、Firebaseデータベースとは完全に統合されていますが、Firebaseデータベースとは別のサービスです。

Firebase認証でユーザにサインインすると、Firebaseクライアントは結果のトークンをアプリのSharedPreferencesに保存します。これは、アプリケーションが再起動しても存続することを意味します(ただし、アプリがアクティブでない間は期限切れになる可能性があります)。

認証状態もメモリに保持されます。すべてのFirebaseオブジェクトはシーンの背後で同じセッションを共有するので、それらの間には1つのオブジェクトしかありません。これは、すべてFirebaseの参照の中に1人の認証されたユーザーしか持つこともできないことを意味します。

getAuth()を呼び出すと、Firebaseサーバにコールバックされません。その理由は、Firebase APIコールが同期しているためです。

+0

返信いただきありがとうございます。 しかし、質問の一部は残っており、FirebaseがAuthManager内にあるメモリとオブジェクトAuthDataをどのように処理するかを参照するものです。 たとえば、OkHttpまたはPicassoを使用すると、オブジェクトのインスタンスを1つ使用して、使用するたびにすべてのハンドラやオブジェクトなどを割り当てたり初期化したりすることがなくなります。 私はアプリの一部を設計しようとしているため、Firebase認証がアプリにプラグインする最良の方法を理解するためにどのように設計されているかを知る必要があります。 – user3638722

+0

私はそれについてさらに詳しい情報を追加しました。これは早すぎる最適化の重大なケース、またはあなたが心配していることの具体性に欠ける質問のいずれかであることに注意してください。あなた自身のコードは、Firebase SDKよりもはるかに問題を引き起こす可能性があります(もちろんそうかもしれませんが)。 –

+0

SDKがどのように機能するかについての情報を求めるのは時期尚早の最適化ではなく、単なる質問です。 「自分のコードはFirebase SDKよりも問題を引き起こす可能性が非常に高い」という理由から、SDK内のメモリ管理について尋ねているので、何かを壊したり問題を引き起こさないようにコードを構築することができます。 私は別の方法で質問します:Firebase Android SDKは、RAMメモリに認証状態を保持していますか、Firebaseオブジェクトの新しいインスタンスを作成するたびに変更されますか? ありがとう! – user3638722

関連する問題