1

Firebase では、認証はnew Firebase参照に対して行われます。ただし、ログインはnew FirebaseAuthClient参照で行われます。

ユーザーの認証:

var dataRef = new Firebase('some_firebase_url');
dataRef.auth(auth_token, callback_function);

ユーザーのサインイン:

var authClient = new FirebaseAuthClient(dataRef, callback_function);
authClient.login('password', some_email, some_password, function(error, token, user) {...});

どうしてこれなの?すべての認証/ログイン/サインアップ機能を同じクラスの一部にする方が理にかなっているでしょうか? 特に、呼び出されたクラス( Authが真ん中にあることにFirebaseAuthClient注意してください) には、実際には認証方法が割り当てられていないのでしょうか?

これは私にとって少し混乱しているので、理解を深めるのに役立つ洞察が得られることを願っています。

4

2 に答える 2

3

2つの違いと、それらが別々のクラスに存在する理由は次のとおりです。

  • Firebase.auth() は、Firebase サーバーで Firebase クライアントを認証するために呼び出す必要がある「低レベル」API です。有効な認証トークンを提供します。これは、さまざまなソースから取得できます (バックエンド サーバー コードから生成したり、Singly などのサードパーティの認証プロバイダーから取得したりする場合があります)。

  • FirebaseAuthClient は、 Firebase Simple Loginの API です。これは、Firebase にバンドルされているシンプルな認証サービスです。これは、基本認証を機能させる最も簡単な方法です (Facebook、Twitter、電子メール/パスワードなどを使用)。Firebase クライアントとシームレスに統合するように最適化されているため、認証トークンの取得と Firebase.auth() の呼び出しの詳細が隠されています。しかし、それはそれがカバーの下で行うことです。Firebase.auth() のラッパーと考えることができます。

そのため、Simple Login を使用している場合は、FirebaseAuthClient を使用するだけでよく、Firebase.auth() は無視できます。ただし、独自のトークンを生成する場合 (たとえば、既存のユーザー データベースと統合できるようにするため) は、代わりに Firebase.auth() を直接処理します。

于 2013-01-30T03:44:03.347 に答える
1

dataRef.authさらに読んで考えた結果、ドキュメントにはまだ記載されていますが、もはや必要ではないことに気付きました。を作成すると、new FirebaseAuthClient本質的にそれが置き換えられます。

最近の変更前new FirebaseAuthClientは、コールバック関数を取りませんでした。認証するには、 を呼び出す必要がありましたdataRef.auth

をインスタンス化するnew FirebaseAuthClientと、その時点で認証が試行されます。コールバックで以前に利用できた情報は、dataRef.authに提供する新しいコールバックで利用できるようになりましたnew FirebaseAuthClient

ただし、少し異なります。dataRef.authバージョンは次のようになりました。

dataRef.auth(authtoken, function(success) { ... });

FirebaseAuthClientバージョンは次のようになります。

var authClient = new FirebaseAuthClient(dataRef, function(error, user) { ... });

したがって、物事を行う新しい方法では、successブール値 (代わりにオブジェクトに置き換えられます) を取得するだけでなく、認証が成功した場合はオブジェクトerrorも取得します。user

この変更の前は、ユーザーが正常に認証され、その情報を取得したい場合、localStorage などから情報を取得する必要がありました。コールバックで提供されるようになりました。これは良い変更です。

さらにtoken、関数に渡されていたパラメーターauthClient.loginは、ユーザー データの一部になりましたuser.firebaseAuthToken

この更新に伴い、authClient.login動作方法が変更されます。コールバックを使用しなくなり、代わりに に渡されたコールバックを起動しますnew FirebaseAuthClient

FirebaseAuthClient実際、そのコールバックは、認証状態を変更する関数に対して設定する必要がある唯一のコールバックのようです。ログインやログアウトなどの特定FirebaseAuthClientの機能は、認証状態を変更するだけで、元のコールバックに依存します。

さらに、ユーザーを認証するためにユーザーの authToken を追跡する必要がなくなったようです。以前は、 param を使用しauthClient.loginてコールバックを呼び出し、そのトークンを保存して に使用していましたが、それ自体が不要になったため、不要になりました。tokendataRef.auth(token, some_callback)dataRef.auth

要約すると、元の質問に答えるために、すべての認証メソッドは実際に同じクラス (FirebaseAuthClient) の一部になりました。dataRef.authは不要になりましたが、ドキュメントにはまだ記載されているため、混乱を招きます。

に置き換えdataRef.authnew FirebaseAuthClientに置き換えdataRef.authauthClient.logout設定する必要があります。

これらの主張の有効性に関する Firebase スタッフからのフィードバックをお待ちしております。

于 2013-01-30T03:00:00.627 に答える