2016-05-27 5 views
17

Я очень новичок в firebase и пытаюсь получить ценность из своей базы данных.Firebase Permission denied Error

, но он показывает мне ту же ошибку каждый раз.

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

Мои firebase правила

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

мой 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> 

Мой mainactivity.java пакет 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) { 

      } 
     }); 
    } 
} 

мой 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+' 
} 

я проверил мой firebase URL. Совершенно верно.

+0

Вы можете разместить образец вашей структуры базы данных? Кроме того, вы случайно применяете правила безопасности? –

+0

В настоящее время правила по умолчанию в firebase позволяют выполнять операции чтения и записи только в разрешенных целях использования. –

ответ

72

Это потому, что вы не имеете права на базу данных, проверьте вкладку Правила в базе данных в реальном времени

Если это

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

Это означает, что только авторизованный пользователь может писать и читать данные.

Переход к

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

Позволяет любому писать базы данных

При переходе на производство обязательно использовать первый один

+3

Может быть, это не лучшее решение для безопасности. –

+2

Да, но может использоваться для тестирования –

+0

Спасибо. Теперь работает. Я не был санкционирован. –