"myapp.firebase.io/events"ノードのアクセス権が、認証されたユーザ(firebase authで認証されたユーザ)のみにアクセスする必要があります。私のルールはFirebaseエラー:認証されたユーザの許可が拒否されました
{
"rules": {
"events": {
".read":"auth != null",
".write":"auth != null"
}
}
}
をIS-そして、私の活動は次のとおりです。ここで
public class NotificationActivity extends AppCompatActivity {
TextView message,header;
private Toolbar mToolbar;
String from;
private Firebase ref;
private FragmentDrawerNotification mDrawerFragment;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
mToolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(mToolbar);
mAuth = FirebaseAuth.getInstance();
message = (TextView) findViewById(R.id.tMessage);
header = (TextView) findViewById(R.id.tHeader);
from=getIntent().getExtras().getString("From");
if(from.equals("Events"))
{
header.setText("Events: ");
message.setText("");
System.out.println(mAuth.getCurrentUser().getEmail());
//System.out.println("Events Auth"+ref.getAuth());
ref = new Firebase("https://myapp.firebaseio.com/events");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String data =dataSnapshot.getValue(String.class);
message.setText(data);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
}
System.out.println(mAuth.getCurrentUser().getEmail());
が正しくユーザーの電子メールにログインしますがref.getAuth()
がnullを返すを返しています。 ログインしたユーザーはデータにアクセスできず、「Firebase Error:permission denied」と表示されます ここで「イベント」は私のキーで、「今日はイベントがあります」は私の価値です。
私は
{
"rules": {
"events": {
".read":true,
".write":true
}
}
}
を使用している場合、私はそれにアクセスすることができますが、私は、認証済みのユーザーとデータベースを保護する必要があります。
実際、初心者としては、新しい&前のSDKの使用が混在しています。今私の問題は修正されました。ありがとう。 –
私にも起こった。 :) –
@Ajoy Das - 私は同じ問題を抱えていましたし、クイックフィックスはルールを更新することでした{".read":true}、読み込みアクセスの場合のみ、やや類似した投稿を簡単な方法で解決するアイデアを得ることができますhttp://stackoverflow.com/questions/14296625/restricting-child-field-access-with-security-rules –