17

アプリケーションで AngularJS で Firebase を使用しています。ユーザーが Facebook 認証を使用してアプリにログインすると、新しいユーザー オブジェクト (Facebook からのプロパティとアプリに関連するプロパティを含む) を作成し、Firebase に保存します。簡単です。新しい User オブジェクトをプッシュしています。

...
var travelBidsFirebaseRef = new Firebase(url);
var newUserRef = travelBidsFirebaseRef.child("user").push(user, callback);
...

push()一意の ID を生成します。のように: -J08SgyOeOU_fFb1CB3G。したがって、この User オブジェクトにアクセスできる唯一の方法は、この ID を使用することです。

angularFire(travelBidsFirebaseRef + "/user/-J08SgyOeOU_fFb1CB3G", $scope, 'user', {});

しかし、Facebook から認証データを受け取ったとき、私は Facebook ID しか持っておらず、以前に生成された Firebase ID を知る方法がありません (そうしないと、すべてのユーザーのマップを維持する必要があり、これは望ましくありません)。ここに質問があります: Facebook ID などのカスタム ID を使用して新しいユーザーを Firebase に保存するにはどうすればよいですか?

4

3 に答える 3

23

を使用する代わりに、Facebook ID をpush()使用します。set()

travelBidsFirebaseRef.child("user").child(facebookId).set(user, callback);

シンプルなログインと複数の認証プロバイダー (Facebook と Twitter を同時に使用している場合など) を使用している場合次に、ID が競合する可能性があるため、プロバイダーごとにユーザーを分割してください。

travelBidsFirebaseRef.child("user/facebook/"+facebookId).set(user, callback);

アップデート

uidFirebaseSimpleLogin 1.0 の時点で、プロバイダー間で固有の を使用できるようになりました。

new FirebaseSimpleLogin(ref, function(err, user) {
   if( err ) throw err;
   travelBidsFirebaseRef.child('user/'+user.uid).set(user, callback);
});
于 2013-08-05T14:04:09.217 に答える
15

次のようなこともできます。

var empsRef = ref.child("employees");

empsRef.child('11111').set({
  lastname: "Lee",
  firstname: "Kang"
});

empsRef.child('22222').set({
  lastname: "Nut",
  firstname: "Dough"
});

出力は次のようになります。

"employees" : {
  "11111" : {
    "lastname" : "Lee",
    "firstname": "Kang"
  },
  "22222" : {
    "lastname" : "Nut",
    "firstname": "Dough"
  }
}

于 2016-04-21T03:24:00.920 に答える