4

私はAndroidベースのアプリケーションでFirebaseを使用しています。 私の目的は、アプリケーションのユーザーがデータベースにデータを書き込むことができるようにする必要がありますが、私は匿名のサインインを使用しているので、ユーザーにサインアップする必要はありません。Firebase:サインイン前のデータベース書き込み

私は、提出することができ、データベースにコミットされます。提出時に、匿名サインインが行われていない可能性があります。 Firebaseでは、データベースに書き込み命令を呼び出すことは可能ですか?ローカルで書かれており、ユーザが匿名で署名した瞬間をコミットしますか?

私は、Firebaseがオフライン機能を提供していることを知っています。しかし、私はサインインする前にデータベースを書くことを呼びかけると、それは私にエラーを与えるだろうと仮定します。

+0

ことが可能です...以下のようになります。 ";" auth == null "、 " .write ":" auth == null " } }データベースセクションで公開すると、プロセスなしでデータを保存してログインすることができます –

+0

@jatDevta私は知っていますセキュリティのルールを緩和することができますが、私のアプリケーションの非ユーザでさえ、データベースに書き込むことができます。私は匿名でサインインするのに問題はありませんが、私が何を求めているのかは、ユーザーがサインインするまで –

答えて

0

アプリケーションの開発時に同じ懸念がありました。ユーザーが飛行機モードで携帯電話を使用していた場合、または最初に起動したときにオフラインになっていた場合、匿名認証が正常に完了する前にデータを保存する必要がありました。

回避策は、データベースに誰でも書き込み可能で、かつ一度だけは読み取り可能な「認証されていない」ツリーを作成することです。ユーザーが認証されると、データを適切な場所にコピーし、認証されていない領域に書き込まれたデータを削除することができます。書き込まれるデータをキューに入れることができます.Firebaseは、ユーザがオンラインのときに自動的に書き込みます。

トリックは、一時的なユーザーIDとして使用する認証されていないツリー内にプッシュIDを取得することです。この値は、SharedPreferencesまたは選択した別の方法を使用してローカルに保持する必要があります。

db = FirebaseDatabase.getInstance(); 
    db.setPersistenceEnabled(true); 

    dbRef = db.getReference(); 

    // This key should be saved on the user's device until authenticated 
    String key = dbRef.child("unauthenticated").push().getKey(); 

    // Write some data 
    dbRef.child("unauthenticated").child(key) 
     .child("somedata").setValue("testing"); 

この子への書き込みは、ネットワーク接続が使用可能になるとすぐに保持されます。 { 」:この一時キーにリスナーをアタッチするだけfirebase上のコンソールと、プロジェクトに移動し、{ 「ルール」次のルールを設定するには行く、

dbRef.child("unauthenticated").child(key).addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Log.d("DB", "Got value from database: " + dataSnapshot.child("somedata").getValue()); 

      if(FirebaseAuth.getInstance().getCurrentUser() != null) { 
       /** If user is authenticated, move data to authenticated location **/ 
      } 
     } 
     @Override public void onCancelled(DatabaseError databaseError) {} 
    }); 
関連する問題