2014-09-30 49 views
2

我想通过追加.json来读取<<firebaseurl>>/test,但我无论做什么都会被拒绝。安全规则解释为休息和网络不同?

我的安全规则:

{ 
"rules": { 
    "test" : { 
     ".read": "auth != null", 
     ".write": "auth != null" 
    }, 
    "users" : { 
     "$userid": { 
     ".read": "$userid === auth.uid", 
     ".write": "$userid === auth.uid" 
     } 
    } 
} 
} 

访问使用JS作品数据像预期一样:

ref.child("test").once('value', function(snap){ 
        console.log(snap.val()); 
       }); 

但是当我尝试使用JSON来获取数据

$.ajax({ 
url: 'https://instance.firebaseio.com/test.json', 
dataType: 'json' , 
type: 'GET', 
error: function() { 
    //handle it 
}, 
success: function(data) {  
    //do something 
} 
}); 

抛出一个权限被拒绝错误。有没有人有任何见解?

回答

3

您的ajax请求正在返回权限被拒绝,因为您的安全规则需要身份验证,但您试图通过HTTP获取数据而无需任何身份验证。您需要在您的请求中传递身份验证令牌,您可以使用Firebase秘密通过简单登录的客户令牌生成器创建该令牌(请查看此提琴:http://jsfiddle.net/firebase/XDXu5/embedded/result/)。您可以通过导航到Firebase控制台中的“秘密”标签找到您的秘密。因此,您的请求将如下所示:

url: 'https://instance.firebaseio.com/test.json?auth=TOKEN'