2016-05-27 26 views
17

Firebase'e ve veritabanımdan değer almaya çalışıyorum.Firebase İzni reddedildi Hata

Ancak her seferinde aynı hatayı gösteriyor.

W/SyncTree: Listen at /child failed: FirebaseError: Permission denied 

Benim Firebase kurallar

{ 
    "Condition" : "sunny", 
    "child" : 5 
} 

benim 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> 

Benim mainactivity.java paket 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) { 

      } 
     }); 
    } 
} 

benim Firebase url kontrol

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+' 
} 

benim BuildGraddle. Mükemmelce Doğru. Eğer öyle ise gerçek zamanlı veri tabanında

Kurallar Tab kontrol Veritabanı yetkiniz yok çünkü

+0

Eğer veritabanı yapısının bir örneğini gönderebilir miyim ilk? Ayrıca güvenlik kurallarını tesadüfen mi uyguluyorsunuz? –

+0

Şu anda firebase'deki varsayılan kurallar, okuma ve yazma işlemlerini yalnızca yetkili kullanımlara izin vermektedir. –

cevap

72

O var

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write":"auth != null" 
    } 
} 

Bu demektir sadece kullanıcının yazıp Verileri okuyabilir yetkili. Üretim için giderken

kullandığınızdan emin olun kimse Veritabanı

yazma izni verir

{ 
    "rules": { 
    ".read": true, 
    ".write":true 
    } 
} 

için değiştirilmesi bir

+3

Güvenlik için en iyi çözüm bu olmayabilir. –

+2

Evet, ancak test amacıyla kullanılabilir –

+0

Teşekkürler. Şuan çalışıyor. Yetkili değildim. –