我开始学习如何在我的应用中使用firebase。我按照angular网站上的说明进行操作,并在index.html中设置代码片段,如:
<!-- The codes to add firebase -->
<script src="https://www.gstatic.com/firebasejs/3.2.0/firebase.js"></script>
<!-- The core firebase client (required) -->
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-app.js"></script>
<!-- firebase-auth - Firebase Authentication (optional) -->
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-auth.js"></script>
<!-- firebase-database - The Firebase Realtime Database (optional) -->
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-database.js"></script>
<script>
var config = {
apiKey: ...,
authDomain: ...,
databaseURL: "https://...",
storageBucket: "...",
};
firebase.initializeApp(config);
</script>
然后我尝试使用HTTP请求来输出数据:
submitForm(personalInfo: PersonalInfo, educationsInfo: Education[], experiencesInfo: Experience[]): Observable<string>{
let body = JSON.stringify({personalInfo, educationsInfo, experiencesInfo});
let headers = new Headers({'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers});
console.log(body);
let url = this.firebaseUrl + 'apply-form.json';
return this.http.put(url, body)
.map((response) => {
return response;
})
.catch(this.handleError);
}
但是,我收到以下错误:
PUT https://XXX.firebaseio.com/apply-form.json 401 (Unauthorized)
我不知道问题所在。我是使用firebase的新手,真的需要有人来帮助我。谢谢!
答案 0 :(得分:1)
默认情况下,您的Firebase数据库只能由经过身份验证的用户编写。请参阅saving data to the database页面上第一个蓝色框中的警告。
要解决此问题,您当然可以configure the security rules of your database to allow public access。但是,虽然在开发过程中这通常很好,但是当你准备好将你的应用程序发布给除你自己之外的其他人时,这是一个坏主意。
安全发布数据的正确方法是要求用户sign in with Firebase Authentication,然后使用该信息确保他们只能访问他们授权的数据。通过使用HTTP访问Firebase数据库,您已经使自己变得比需要的更难。我建议对authentication使用Firebase JavaScript SDK并访问database。