I am Very beginner to firebase and trying to get value from my database.
but it showing me same error every time.
W/SyncTree: Listen at /child failed: FirebaseError: Permission denied
My firebase rules
{ "Condition" : "sunny", "child" : 5 }
my Androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mohit.firebase" > <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
My mainactivity.java package com.mohit.firebase;
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.firebase.client.DataSnapshot; import com.firebase.client.Firebase; import com.firebase.client.FirebaseError; import com.firebase.client.ValueEventListener; public class MainActivity extends AppCompatActivity { TextView tv; Button bt1; Button bt2; Firebase mRootRef; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.button); bt1 = (Button) findViewById(R.id.button); bt2 = (Button) findViewById(R.id.button2); Firebase.setAndroidContext(this); mRootRef = new Firebase("https://superb-flag-126719.firebaseio.com/"); Log.d("fb","Firebase Object: " + String.valueOf(mRootRef)); } @Override protected void onStart() { super.onStart(); Firebase mchild = mRootRef.child("child"); mchild.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String condition = (String) dataSnapshot.getValue(); Log.d("fb","String get: " + condition); tv.setText(condition); } @Override public void onCancelled(FirebaseError firebaseError) { } }); } }
my BuildGraddle
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.mohit.firebase" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE-FIREBASE.txt' exclude 'META-INF/NOTICE' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.firebase:firebase-client-android:2.5.2+' }
i checked my firebase url. It's Perfectly Correct.
Most likely this is because the Database of projects created in the new Firebase Console are readable/writeable only by users that are signed in using Firebase Authentication. Since you're not signing the user in from your code, the database denies you access to the data.
It's because you are not authorized to the Database, check the Rules Tab in the Realtime database
If it's
{ "rules": { ".read": "auth != null", ".write":"auth != null" } }
This means only authorized user's can write and read the Data.
Changing to
{ "rules": { ".read": true, ".write":true } }
Allows anyone to write the Database
When going for Production be sure to use the first one
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With