--- tags: firebase, disqus: hackmd --- ###### tags: `firebase` # firebase 參考文章 [Day26 前端福音(1/4): Firebase-介紹 & 建立專案](https://ithelp.ithome.com.tw/articles/10205404) [Day27 前端福音(2/4): Firebase-寫入&刪除資料](https://ithelp.ithome.com.tw/articles/10205765) [Day28 前端福音(3/4): Firebase-讀取資料](https://ithelp.ithome.com.tw/articles/10205961) [Day29 前端福音(4/4): Firebase-帳號系統&資料讀寫規則](https://ithelp.ithome.com.tw/articles/10206354) [[教學] Firebase Hosting 免費1G/10G靜態網頁空間架設,與綁定網域名稱](https://www.minwt.com/website/server/21596.html) [Firebase Cloud Firestore 基礎入門 Part.1 - 簡介](https://ithelp.ithome.com.tw/articles/10223256?sc=rss.iron) [Firebase Cloud Firestore 基礎入門 Part.2 - 建置 Firebase 專案及資料庫](https://ithelp.ithome.com.tw/articles/10223615) [在 Firebase 中管理用户](https://firebase.google.com/docs/auth/web/manage-users) --- firebase代管 ==> Firebase Hosting Cloud Firestore 資料的儲存位置 ==> 選擇離台灣比較近的 asia-east2 firestore要使用必須要有引入`firebase-firestore.js` ```javascript= const db = firebase.firestore(); ``` * 設定:set() * 更新:update() * 添加:add() * 刪除:delete() 一個簡單的新增範例 ```htmlmixed= <!-- The core Firebase JS SDK is always required and must be listed first --> <script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-firestore.js"></script> <!-- TODO: Add SDKs for Firebase products that you want to use https://firebase.google.com/docs/web/setup#available-libraries --> <script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-analytics.js"></script> <!-- firebase的js必須放在所有js之前 --> <script src="./index.js"></script> ``` ```javascript= // Your web app's Firebase configuration const firebaseConfig = { apiKey: 'AIzaSyAncpQXcc6UAlllACYvqDzrpQnemgsDKbk', authDomain: 'member-database-fdf1e.firebaseapp.com', databaseURL: 'https://member-database-fdf1e.firebaseio.com', projectId: 'member-database-fdf1e', storageBucket: 'member-database-fdf1e.appspot.com', messagingSenderId: '398211092204', appId: '1:398211092204:web:e56a27f2a566c36e69dfc9', measurementId: 'G-19CNHH96GK' }; // Initialize Firebase firebase.initializeApp(firebaseConfig); firebase.analytics(); const db = firebase.firestore(); //新增會員資料 db.collection('users').add({ userAccount: 'chris', userPassword: '000000', }) .then(function (docRef) { console.log('Document written with ID: ', docRef.id); }) .catch(function (error) { console.error('Error adding document: ', error); }); ``` --- ## 註冊與驗證 需要引入firebase-auth.js才能使用auth(); ```javascript= <script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-auth.js"></script> ``` ```javascript= firebase.auth().createUserWithEmailAndPassword(email, password) .then(() => { ... }) .catch((error) => { console.log(error.message); }); ``` [在网站上开始使用 Firebase 身份验证](https://firebase.google.com/docs/auth/web/start) ## 登入 ```javascript= firebase.auth().signInWithEmailAndPassword(email, password) .then(() => { ... }) .catch((error) => { console.log(error.message); }); ``` ```javascript= var user = firebase.auth().currentUser; if (user) { // User is signed in. } else { // No user is signed in. } ``` 但是 firebase.auth().currentUser 只會取得當前的登入狀態,也就是如果登出後,它也不會改變。 如果想要即時收到使用者當前的登入狀態,可以使用這個方法: 它會在登入狀態變動時執行 callback function,有點像是 Realtime database 的 on 功能。 ```javascript= firebase.auth().onAuthStateChanged(function(user) { if (user) { // User is signed in. } else { // No user is signed in. } }); ``` ## 讀寫權限 權限規則主要使用這三個: * read: 限制讀取的權限 * write 限制寫入的權限 * validate: 資料驗證(ex: 要寫入的成績是不是在 0~100 之間) ## 小工具 接下來測試讀寫規則時,不用辛苦地來回網頁與 JS,可以使用規則頁面的模擬工具