Firebase - คู่มือฉบับย่อ

ตามเอกสารอย่างเป็นทางการของ Firebase -

Firebase สามารถเพิ่มพลังให้กับแบ็กเอนด์ของแอปรวมถึงการจัดเก็บข้อมูลการตรวจสอบผู้ใช้โฮสติ้งแบบคงที่และอื่น ๆ มุ่งเน้นไปที่การสร้างประสบการณ์ผู้ใช้ที่ไม่ธรรมดา เราจะดูแลส่วนที่เหลือ สร้างแอปบนอุปกรณ์เคลื่อนที่และเว็บข้ามแพลตฟอร์มด้วย Android, iOS และ JavaScript SDK ของเรา คุณยังสามารถเชื่อมต่อ Firebase กับแบ็กเอนด์ที่คุณมีอยู่โดยใช้ไลบรารีฝั่งเซิร์ฟเวอร์หรือ REST API ของเรา

คุณสมบัติ Firebase

  • Real-time Database - Firebase รองรับข้อมูล JSON และผู้ใช้ทั้งหมดที่เชื่อมต่อจะได้รับการอัปเดตสดทุกครั้งหลังการเปลี่ยนแปลง

  • Authentication - เราสามารถใช้รหัสผ่านแบบไม่ระบุตัวตนหรือการยืนยันตัวตนทางสังคมอื่น ๆ

  • Hosting - แอปพลิเคชันสามารถใช้งานได้ผ่านการเชื่อมต่อกับเซิร์ฟเวอร์ Firebase ที่ปลอดภัย

ข้อดีของ Firebase

  • ใช้งานง่ายและใช้งานง่าย ไม่จำเป็นต้องมีการกำหนดค่าที่ซับซ้อน

  • ข้อมูลเป็นแบบเรียลไทม์ซึ่งหมายความว่าทุกการเปลี่ยนแปลงจะอัปเดตไคลเอ็นต์ที่เชื่อมต่อโดยอัตโนมัติ

  • Firebase นำเสนอแดชบอร์ดการควบคุมที่เรียบง่าย

  • มีบริการที่มีประโยชน์มากมายให้เลือก

ข้อ จำกัด ของ Firebase

  • แผนบริการฟรี Firebase จำกัด ไว้ที่ 50 Connections และพื้นที่เก็บข้อมูล 100 MB

ในบทถัดไปเราจะพูดถึงการตั้งค่าสภาพแวดล้อมของ Firebase

ในบทนี้เราจะแสดงวิธีเพิ่ม Firebase ลงในแอปพลิเคชันที่มีอยู่ เราจะต้องNodeJS. ตรวจสอบลิงค์จากตารางต่อไปนี้หากคุณยังไม่มี

ซีเนียร์ ซอฟต์แวร์และคำอธิบาย
1

NodeJS and NPM

NodeJS เป็นแพลตฟอร์มที่จำเป็นสำหรับการพัฒนา Firebase กร้าของเราติดตั้ง NodeJS สิ่งแวดล้อม

ขั้นตอนที่ 1 - สร้างบัญชี Firebase

คุณสามารถสร้างบัญชี Firebase ที่นี่

ขั้นตอนที่ 2 - สร้างแอป Firebase

คุณสามารถสร้างแอพใหม่จากหน้าแดชบอร์ด ภาพต่อไปนี้แสดงแอปที่เราสร้างขึ้น เราสามารถคลิกไฟล์Manage App เพื่อเข้าสู่แอป

ขั้นตอนที่ 3a - สร้างแอป HTML / js พื้นฐาน

คุณต้องสร้างโฟลเดอร์ที่จะวางแอพของคุณ ภายในโฟลเดอร์นั้นเราจะต้องindex.html และ index.jsไฟล์. เราจะเพิ่ม Firebase ในส่วนหัวของแอปของเรา

index.html

<html>
   <head>
      <script src = "https://cdn.firebase.com/js/client/2.4.2/firebase.js"></script>
      <script type = "text/javascript" src = "index.js"></script>
   </head>
	
   <body>

   </body>
</html>

ขั้นตอนที่ 3b - ใช้ NPM หรือ Bower

หากคุณต้องการใช้แอปที่มีอยู่คุณสามารถใช้แพ็คเกจ Firebase NPM หรือ Bowers เรียกใช้คำสั่งต่อไปนี้จากโฟลเดอร์รากของแอป

npm install firebase --save

bower install firebase

ข้อมูล Firebase แสดงออบเจ็กต์ JSON หากคุณเปิดแอปจากแดชบอร์ด Firebase คุณสามารถเพิ่มข้อมูลด้วยตนเองได้โดยคลิกที่ไฟล์+ ลงชื่อ.

เราจะสร้างโครงสร้างข้อมูลง่ายๆ คุณสามารถตรวจสอบภาพด้านล่าง

ในบทที่แล้วเราเชื่อมต่อ Firebase กับแอปของเรา ตอนนี้เราสามารถบันทึก Firebase ลงในคอนโซลได้แล้ว

console.log(firebase)

เราสามารถสร้างการอ้างอิงถึงคอลเลกชันของผู้เล่นของเรา

var ref = firebase.database().ref('players');

console.log(ref);

เราสามารถเห็นผลลัพธ์ต่อไปนี้ในคอนโซล

บทนี้จะอธิบายการแสดงอาร์เรย์ของ Firebase เราจะใช้ข้อมูลเดิมจากบทที่แล้ว

เราสามารถสร้างข้อมูลนี้ได้โดยการส่งโครงสร้าง JSON ต่อไปนี้ไปยังคอลเล็กชันของผู้เล่น

['john', 'amanda']

เนื่องจาก Firebase ไม่สนับสนุน Arrays โดยตรง แต่สร้างรายการวัตถุที่มีจำนวนเต็มเป็นชื่อคีย์

สาเหตุที่ไม่ใช้อาร์เรย์เนื่องจาก Firebase ทำหน้าที่เป็นฐานข้อมูลแบบเรียลไทม์และหากผู้ใช้สองรายต้องจัดการอาร์เรย์ในเวลาเดียวกันผลลัพธ์อาจเป็นปัญหาเนื่องจากดัชนีอาร์เรย์มีการเปลี่ยนแปลงตลอดเวลา

วิธีที่ Firebase จัดการคีย์ (ดัชนี) จะยังคงเหมือนเดิม เราสามารถลบjohn และ amanda จะยังคงมีคีย์ (ดัชนี) 1.

ในบทนี้เราจะแสดงวิธีบันทึกข้อมูลของคุณไปยัง Firebase

ชุด

setวิธีการจะเขียนหรือแทนที่ข้อมูลบนเส้นทางที่ระบุ ให้เราสร้างข้อมูลอ้างอิงไปยังคอลเลคชันของผู้เล่นและตั้งค่าผู้เล่นสองคน

var playersRef = firebase.database().ref("players/");

playersRef.set ({
   John: {
      number: 1,
      age: 30
   },
	
   Amanda: {
      number: 2,
      age: 20
   }
});

เราจะเห็นผลลัพธ์ดังต่อไปนี้

อัปเดต

เราสามารถอัปเดตข้อมูล Firebase ได้ในลักษณะเดียวกัน สังเกตว่าเราใช้ไฟล์players/john เส้นทาง.

var johnRef = firebase.database().ref("players/John");

johnRef.update ({
   "number": 10
});

เมื่อรีเฟรชแอปเราจะเห็นว่าข้อมูล Firebase กำลังอัปเดต

ในบทสุดท้ายของเราเราได้แสดงวิธีเขียนข้อมูลใน Firebase บางครั้งคุณต้องมีตัวระบุเฉพาะสำหรับข้อมูลของคุณ เมื่อคุณต้องการสร้างตัวระบุเฉพาะสำหรับข้อมูลของคุณคุณต้องใช้วิธีการพุชแทนวิธีการตั้งค่า

วิธีการกด

push()วิธีการจะสร้างรหัสเฉพาะเมื่อข้อมูลถูกผลักดัน หากเราต้องการสร้างผู้เล่นของเราจากบทก่อนหน้าด้วยรหัสเฉพาะเราสามารถใช้ข้อมูลโค้ดที่ระบุด้านล่าง

var ref = new Firebase('https://tutorialsfirebase.firebaseio.com');

var playersRef = ref.child("players");
playersRef.push ({
   name: "John",
   number: 1,
   age: 30
});

playersRef.push ({
   name: "Amanda",
   number: 2,
   age: 20
});

ตอนนี้ข้อมูลของเราจะมีลักษณะแตกต่างกัน ชื่อจะเป็นคู่ชื่อ / ค่าเหมือนกับคุณสมบัติอื่น ๆ

วิธีการสำคัญ

เราสามารถรับคีย์ใด ๆ จาก Firebase ได้โดยใช้ไฟล์ key()วิธี. ตัวอย่างเช่นหากเราต้องการรับชื่อคอลเล็กชันของเราเราสามารถใช้ข้อมูลโค้ดต่อไปนี้

var ref = new Firebase('https://tutorialsfirebase.firebaseio.com');

var playersRef = ref.child("players");

var playersKey = playersRef.key();
console.log(playersKey);

คอนโซลจะบันทึกชื่อคอลเลคชันของเรา (ผู้เล่น)

เพิ่มเติมเกี่ยวกับเรื่องนี้ในบทต่อไปของเรา

ข้อมูลธุรกรรมจะถูกใช้เมื่อคุณต้องการส่งคืนข้อมูลบางส่วนจากฐานข้อมูลจากนั้นทำการคำนวณและจัดเก็บกลับ

สมมติว่าเรามีผู้เล่นหนึ่งคนในรายชื่อผู้เล่นของเรา

เราต้องการเรียกคืนทรัพย์สินเพิ่มอายุ 1 ปีและส่งคืนให้กับ Firebase

amandaRefกำลังดึงอายุจากคอลเลกชันจากนั้นเราสามารถใช้วิธีการทำธุรกรรม เราจะได้อายุปัจจุบันเพิ่มหนึ่งปีและอัปเดตคอลเลคชัน

var ref = new Firebase('https://tutorialsfirebase.firebaseio.com');

var amandaAgeRef = ref.child("players").child("-KGb1Ls-gEErWbAMMnZC").child('age');

amandaAgeRef.transaction(function(currentAge) {
   return currentAge + 1;
});

หากเราเรียกใช้รหัสนี้เราจะเห็นว่ามีการอัปเดตค่าอายุเป็น 21.

ในบทนี้เราจะแสดงวิธีอ่านข้อมูล Firebase ภาพต่อไปนี้แสดงข้อมูลที่เราต้องการอ่าน

เราสามารถใช้ไฟล์ on()วิธีการดึงข้อมูล วิธีนี้ใช้ประเภทเหตุการณ์เป็น"value" แล้วดึงไฟล์ snapshotของข้อมูล เมื่อเราเพิ่มval() วิธีการสแนปชอตเราจะได้รับการแสดงข้อมูล JavaScript

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var ref = firebase.database().ref();

ref.on("value", function(snapshot) {
   console.log(snapshot.val());
}, function (error) {
   console.log("Error: " + error.code);
});

หากเรารันโค้ดต่อไปนี้คอนโซลของเราจะแสดงข้อมูล

ในบทต่อไปเราจะอธิบายประเภทเหตุการณ์อื่น ๆ ที่คุณสามารถใช้ในการอ่านข้อมูล

Firebase มีเหตุการณ์หลายประเภทสำหรับการอ่านข้อมูล คำอธิบายที่ใช้บ่อยที่สุดบางส่วนมีการอธิบายไว้ด้านล่าง

มูลค่า

ประเภทเหตุการณ์แรกคือ value. เราได้แสดงวิธีใช้คุณค่าในบทสุดท้ายของเรา ประเภทเหตุการณ์นี้จะถูกทริกเกอร์ทุกครั้งที่ข้อมูลมีการเปลี่ยนแปลงและจะดึงข้อมูลทั้งหมดรวมทั้งลูกด้วย

child_added

ประเภทเหตุการณ์นี้จะถูกเรียกหนึ่งครั้งสำหรับผู้เล่นทุกคนและทุกครั้งที่มีการเพิ่มผู้เล่นใหม่ในข้อมูลของเรา มีประโยชน์สำหรับการอ่านข้อมูลรายการเนื่องจากเราสามารถเข้าถึงผู้เล่นที่เพิ่มและผู้เล่นคนก่อนหน้าได้จากรายการ

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var playersRef = firebase.database().ref("players/");

playersRef.on("child_added", function(data, prevChildKey) {
   var newPlayer = data.val();
   console.log("name: " + newPlayer.name);
   console.log("age: " + newPlayer.age);
   console.log("number: " + newPlayer.number);
   console.log("Previous Player: " + prevChildKey);
});

เราจะได้ผลลัพธ์ดังต่อไปนี้

หากเราเพิ่มผู้เล่นใหม่ชื่อ Bob เราจะได้รับข้อมูลที่อัปเดต

child_changed

ประเภทเหตุการณ์นี้จะถูกทริกเกอร์เมื่อข้อมูลมีการเปลี่ยนแปลง

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var playersRef = firebase.database().ref("players/");

playersRef.on("child_changed", function(data) {
   var player = data.val();
   console.log("The updated player name is " + player.name);
});

เราสามารถเปลี่ยนแปลงได้ Bob ถึง Maria ใน Firebase เพื่อรับการอัปเดต

child_removed

หากเราต้องการเข้าถึงข้อมูลที่ถูกลบเราสามารถใช้ child_removed ประเภทเหตุการณ์

ตัวอย่าง

var playersRef = firebase.database().ref("players/");

playersRef.on("child_removed", function(data) {
   var deletedPlayer = data.val();
   console.log(deletedPlayer.name + " has been deleted");
});

ตอนนี้เราสามารถลบ Maria จาก Firebase เพื่อรับการแจ้งเตือน

บทนี้จะแสดงวิธีแยกการโทรกลับใน Firebase

ยกเลิกการโทรกลับสำหรับประเภทเหตุการณ์

สมมติว่าเราต้องการแยกการเรียกกลับสำหรับฟังก์ชันด้วย value ประเภทเหตุการณ์

ตัวอย่าง

var playersRef = firebase.database().ref("players/");

ref.on("value", function(data) {
   console.log(data.val());
}, function (error) {
   console.log("Error: " + error.code);
});

เราจำเป็นต้องใช้ off()วิธี. การดำเนินการนี้จะลบการโทรกลับทั้งหมดด้วยvalue ประเภทเหตุการณ์

playersRef.off("value");

ปลดการโทรกลับทั้งหมด

เมื่อเราต้องการแยกการเรียกกลับทั้งหมดเราสามารถใช้ -

playersRef.off();

Firebase นำเสนอวิธีต่างๆในการสั่งซื้อข้อมูล ในบทนี้เราจะแสดงตัวอย่างแบบสอบถามง่ายๆ เราจะใช้ข้อมูลเดียวกันจากบทก่อนหน้าของเรา

สั่งซื้อโดยเด็ก

ในการสั่งซื้อข้อมูลโดยใช้ชื่อเราสามารถใช้รหัสต่อไปนี้

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var playersRef = firebase.database().ref("players/");

playersRef.orderByChild("name").on("child_added", function(data) {
   console.log(data.val().name);
});

เราจะเห็นชื่อตามลำดับตัวอักษร

สั่งซื้อด้วยคีย์

เราสามารถจัดลำดับข้อมูลด้วยการคีย์ในลักษณะเดียวกัน

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var playersRef = firebase.database().ref("players/");

playersRef.orderByKey().on("child_added", function(data) {
   console.log(data.key);
});

ผลลัพธ์จะเป็นดังภาพด้านล่าง

เรียงตามมูลค่า

เรายังสามารถเรียงลำดับข้อมูลตามค่า ให้เราเพิ่มคอลเล็กชันการให้คะแนนใน Firebase

ตอนนี้เราสามารถเรียงลำดับข้อมูลตามมูลค่าสำหรับผู้เล่นแต่ละคน

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var ratingRef = firebase.database().ref("ratings/");

ratingRef.orderByValue().on("value", function(data) {
   
   data.forEach(function(data) {
      console.log("The " + data.key + " rating is " + data.val());
   });
   
});

ผลลัพธ์จะเป็นดังภาพด้านล่าง

Firebase มีหลายวิธีในการกรองข้อมูล

จำกัด ไว้ที่หนึ่งและสุดท้าย

ให้เราเข้าใจว่าขีด จำกัด แรกและสุดท้ายคืออะไร

  • limitToFirst วิธีการส่งคืนจำนวนรายการที่ระบุโดยเริ่มจากรายการแรก

  • limitToLast วิธีการส่งคืนจำนวนรายการที่ระบุโดยเริ่มจากรายการสุดท้าย

ตัวอย่างของเราแสดงให้เห็นว่ามันทำงานอย่างไร เนื่องจากเรามีผู้เล่นเพียงสองคนในฐานข้อมูลเราจึง จำกัด การสืบค้นให้กับผู้เล่นหนึ่งคน

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var firstPlayerRef = firebase.database().ref("players/").limitToFirst(1);

var lastPlayerRef = firebase.database().ref('players/').limitToLast(1);

firstPlayerRef.on("value", function(data) {
   console.log(data.val());
}, function (error) {
   console.log("Error: " + error.code);
});

lastPlayerRef.on("value", function(data) {
   console.log(data.val());
}, function (error) {
   console.log("Error: " + error.code);
});

คอนโซลของเราจะบันทึกผู้เล่นคนแรกจากแบบสอบถามแรกและผู้เล่นคนสุดท้ายจากแบบสอบถามที่สอง

ตัวกรองอื่น ๆ

เรายังสามารถใช้วิธีการกรอง Firebase อื่น ๆ startAt(), endAt() และ equalTo()สามารถใช้ร่วมกับวิธีการสั่งซื้อได้ ในตัวอย่างของเราเราจะรวมเข้ากับไฟล์orderByChild() วิธี.

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var playersRef = firebase.database().ref("players/");

playersRef.orderByChild("name").startAt("Amanda").on("child_added", function(data) {
   console.log("Start at filter: " + data.val().name);
});

playersRef.orderByChild("name").endAt("Amanda").on("child_added", function(data) {
   console.log("End at filter: " + data.val().name);
});

playersRef.orderByChild("name").equalTo("John").on("child_added", function(data) {
   console.log("Equal to filter: " + data.val().name);
});

playersRef.orderByChild("age").startAt(20).on("child_added", function(data) {
   console.log("Age filter: " + data.val().name);
});

แบบสอบถามแรกจะเรียงลำดับองค์ประกอบตามชื่อและกรองจากผู้เล่นที่มีชื่อ Amanda. คอนโซลจะบันทึกผู้เล่นทั้งสองคน คำค้นหาที่สองจะบันทึก "Amanda" เนื่องจากเราจะลงท้ายด้วยชื่อนี้ อันที่สามจะเข้าสู่ระบบ "John" เนื่องจากเรากำลังค้นหาผู้เล่นที่มีชื่อนั้น

ตัวอย่างที่สี่แสดงให้เห็นว่าเราสามารถรวมตัวกรองกับค่า "อายุ" ได้อย่างไร แทนที่จะเป็นสตริงเราจะส่งตัวเลขภายในstartAt() วิธีการเนื่องจากอายุแสดงด้วยค่าตัวเลข

ในบทนี้เราจะพูดถึงแนวทางปฏิบัติที่ดีที่สุดของ Firebase

หลีกเลี่ยงการทำรังข้อมูล

เมื่อคุณดึงข้อมูลจาก Firebase คุณจะได้รับโหนดลูกทั้งหมด ด้วยเหตุนี้จึงไม่ได้กล่าวว่าการทำรังลึกเป็นแนวทางปฏิบัติที่ดีที่สุด

ทำให้ข้อมูลผิดปกติ

เมื่อคุณต้องการฟังก์ชันการซ้อนลึกให้พิจารณาเพิ่มคอลเลกชันที่แตกต่างกันสองสามชุด แม้ว่าคุณจะต้องเพิ่มการทำสำเนาข้อมูลและใช้มากกว่าหนึ่งคำขอเพื่อดึงสิ่งที่คุณต้องการ

ในบทนี้เราจะแสดงวิธีใช้การตรวจสอบสิทธิ์อีเมล / รหัสผ่าน Firebase

สร้างผู้ใช้

ในการตรวจสอบสิทธิ์ผู้ใช้เราสามารถใช้ไฟล์ createUserWithEmailAndPassword(email, password) วิธี.

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var email = "[email protected]";
var password = "mypassword";

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
   console.log(error.code);
   console.log(error.message);
});

เราสามารถตรวจสอบแดชบอร์ด Firebase และดูว่ามีการสร้างผู้ใช้

เข้าสู่ระบบ

ขั้นตอนการลงชื่อเข้าใช้เกือบจะเหมือนกัน เรากำลังใช้ไฟล์signInWithEmailAndPassword(email, password) เพื่อลงชื่อเข้าใช้ผู้ใช้

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var email = "[email protected]";
var password = "mypassword";

firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
   console.log(error.code);
   console.log(error.message);
});

ออกจากระบบ

และในที่สุดเราก็สามารถล็อกเอาต์ผู้ใช้ด้วยไฟล์ signOut() วิธี.

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

firebase.auth().signOut().then(function() {
   console.log("Logged out!")
}, function(error) {
   console.log(error.code);
   console.log(error.message);
});

ในบทนี้เราจะแสดงวิธีตั้งค่าการตรวจสอบสิทธิ์ Google ใน Firebase

ขั้นตอนที่ 1 - เปิดใช้งาน Google Authentication

เปิดแดชบอร์ด Firebase แล้วคลิก Authที่เมนูด้านซ้าย หากต้องการเปิดรายการวิธีการที่มีให้คุณต้องคลิกที่SIGN_IN_METHODS ในเมนูแท็บ

ตอนนี้คุณสามารถเลือก Google จากรายการเปิดใช้งานและบันทึก

ขั้นตอนที่ 2 - สร้างปุ่ม

ภายใน index.htmlเราจะเพิ่มสองปุ่ม

index.html

<button onclick = "googleSignin()">Google Signin</button>
<button onclick = "googleSignout()">Google Signout</button>

ขั้นตอนที่ 3 - ลงชื่อเข้าใช้และออกจากระบบ

ในขั้นตอนนี้เราจะสร้างฟังก์ชัน Signin และ Signout เราจะใช้signInWithPopup() และ signOut() วิธีการ

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

var provider = new firebase.auth.GoogleAuthProvider();

function googleSignin() {
   firebase.auth()
   
   .signInWithPopup(provider).then(function(result) {
      var token = result.credential.accessToken;
      var user = result.user;
		
      console.log(token)
      console.log(user)
   }).catch(function(error) {
      var errorCode = error.code;
      var errorMessage = error.message;
		
      console.log(error.code)
      console.log(error.message)
   });
}

function googleSignout() {
   firebase.auth().signOut()
	
   .then(function() {
      console.log('Signout Succesfull')
   }, function(error) {
      console.log('Signout Failed')  
   });
}

หลังจากรีเฟรชหน้าแล้วเราสามารถคลิกที่ไฟล์ Google Signinปุ่มเพื่อเรียกใช้ป๊อปอัปของ Google หากการลงชื่อเข้าใช้สำเร็จคอนโซลนักพัฒนาจะเข้าสู่ระบบผู้ใช้ของเรา

นอกจากนี้เรายังสามารถคลิกที่ไฟล์ Google Signoutปุ่มเพื่อออกจากระบบจากแอพ คอนโซลจะยืนยันว่าการล็อกเอาต์สำเร็จ

ในบทนี้เราจะตรวจสอบผู้ใช้ด้วยการตรวจสอบสิทธิ์ Firebase Facebook

ขั้นตอนที่ 1 - เปิดใช้งาน Facebook Auth

เราต้องเปิดแดชบอร์ด Firebase แล้วคลิก Authในเมนูด้านข้าง ต่อไปเราต้องเลือกSIGN-IN-METHODในแถบแท็บ เราจะเปิดใช้งาน Facebook auth และเปิดทิ้งไว้เนื่องจากเราต้องเพิ่มApp ID และ App Secret เมื่อเราทำขั้นตอนที่ 2 เสร็จ

ขั้นตอนที่ 2 - สร้างแอพ Facebook

ในการเปิดใช้งานการรับรองความถูกต้องของ Facebook เราต้องสร้างแอพ Facebook คลิกที่ลิงค์นี้เพื่อเริ่มต้น เมื่อสร้างแอปแล้วเราจำเป็นต้องคัดลอกApp ID และ App Secret ไปยังหน้า Firebase ซึ่งเราเปิดทิ้งไว้ในขั้นตอนที่ 1 เราต้องคัดลอกด้วย OAuth Redirect URIจากหน้าต่างนี้ไปยังแอพ Facebook คุณสามารถหา+ Add Product ภายในเมนูด้านข้างของแดชบอร์ดแอพ Facebook

เลือก Facebook Loginและจะปรากฏในเมนูด้านข้าง คุณจะพบช่องป้อนข้อมูลValid OAuth redirect URIs ที่คุณต้องคัดลอกไฟล์ OAuth Redirect URI จาก Firebase

ขั้นตอนที่ 3 - เชื่อมต่อกับ Facebook SDK

คัดลอกรหัสต่อไปนี้ที่จุดเริ่มต้นของไฟล์ body แท็กใน index.html. อย่าลืมเปลี่ยนไฟล์'APP_ID' ไปยังรหัสแอปของคุณจากแดชบอร์ด Facebook

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

<script>
   window.fbAsyncInit = function() {
      FB.init ({
         appId      : 'APP_ID',
         xfbml      : true,
         version    : 'v2.6'
      });
   };

   (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) {return;}
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/en_US/sdk.js";
      fjs.parentNode.insertBefore(js, fjs);
   } (document, 'script', 'facebook-jssdk'));
	
</script>

ขั้นตอนที่ 4 - สร้างปุ่ม

เราตั้งค่าทุกอย่างในสามขั้นตอนแรกตอนนี้เราสามารถสร้างปุ่มสองปุ่มสำหรับล็อกอินและออกจากระบบ

index.html

<button onclick = "facebookSignin()">Facebook Signin</button>
<button onclick = "facebookSignout()">Facebook Signout</button>

ขั้นตอนที่ 5 - สร้างฟังก์ชันการตรวจสอบสิทธิ์

นี่เป็นขั้นตอนสุดท้าย เปิดindex.js และคัดลอกรหัสต่อไปนี้

index.js

var provider = new firebase.auth.FacebookAuthProvider();

function facebookSignin() {
   firebase.auth().signInWithPopup(provider)
   
   .then(function(result) {
      var token = result.credential.accessToken;
      var user = result.user;
		
      console.log(token)
      console.log(user)
   }).catch(function(error) {
      console.log(error.code);
      console.log(error.message);
   });
}

function facebookSignout() {
   firebase.auth().signOut()
   
   .then(function() {
      console.log('Signout successful!')
   }, function(error) {
      console.log('Signout failed')
   });
}

ในบทนี้เราจะอธิบายวิธีใช้การตรวจสอบความถูกต้องของ Twitter

ขั้นตอนที่ 1 - สร้างแอพ Twitter

คุณสามารถสร้างแอพ Twitter ได้ที่ลิงค์นี้ เมื่อสร้างแอปของคุณแล้วให้คลิกที่Keys and Access Tokens คุณสามารถหาได้ที่ไหน API Key และ API Secret. คุณจะต้องใช้สิ่งนี้ในขั้นตอนที่ 2

ขั้นตอนที่ 2 - เปิดใช้งานการตรวจสอบความถูกต้องของ Twitter

ในเมนูด้านข้างของแดชบอร์ด Firebase คุณต้องคลิก Auth. จากนั้นเปิดSIGN-IN-METHODแท็บ คลิกที่ Twitter เพื่อเปิดใช้งาน คุณต้องเพิ่มAPI Key และ API Secret จากขั้นตอนที่ 1.

จากนั้นคุณจะต้องคัดลอกไฟล์ callback URLแล้ววางลงในแอพ Twitter ของคุณ คุณสามารถค้นหา URL โทรกลับของแอพ Twitter ของคุณเมื่อคุณคลิกที่ไฟล์Settings แท็บ

ขั้นตอนที่ 3 - เพิ่มปุ่ม

ในขั้นตอนนี้เราจะเพิ่มปุ่มสองปุ่มภายในไฟล์ body แท็กของ index.html.

index.html

<button onclick = "twitterSignin()">Twitter Signin</button>
<button onclick = "twitterSignout()">Twitter Signout</button>

ขั้นตอนที่ 4 - ฟังก์ชันการตรวจสอบสิทธิ์

ตอนนี้เราสามารถสร้างฟังก์ชันสำหรับการตรวจสอบความถูกต้องของ Twitter ได้แล้ว

index.js

var provider = new firebase.auth.TwitterAuthProvider();

function twitterSignin() {
   firebase.auth().signInWithPopup(provider)
    
  .then(function(result) {
      var token = result.credential.accessToken;
      var user = result.user;
		
      console.log(token)
      console.log(user)
   }).catch(function(error) {
      console.log(error.code)
      console.log(error.message)
   });
}

function twitterSignout() {
   firebase.auth().signOut()
   
   .then(function() {
      console.log('Signout successful!')
   }, function(error) {
      console.log('Signout failed!')
   });
}

เมื่อเราเริ่มแอปของเราเราสามารถกำหนดจุดเริ่มต้นหรือออกจากระบบได้โดยคลิกที่ปุ่มสองปุ่ม คอนโซลจะยืนยันว่าการพิสูจน์ตัวตนสำเร็จ

ในบทนี้เราจะแสดงวิธีพิสูจน์ตัวตนผู้ใช้โดยใช้ GitHub API

ขั้นตอนที่ 1 - เปิดใช้งานการตรวจสอบสิทธิ์ GitHub

เปิดแดชบอร์ด Firebase แล้วคลิก Auth จากเมนูด้านข้างแล้ว SIGN-IN-METHODในแถบแท็บ คุณต้องเปิดใช้งานการรับรองความถูกต้อง GitHub และคัดลอกไฟล์Callback URL. คุณจะต้องใช้สิ่งนี้ในขั้นตอนที่ 2 คุณสามารถเปิดแท็บนี้ทิ้งไว้ได้เนื่องจากคุณจะต้องเพิ่มClient ID และ Client Secret เมื่อคุณทำขั้นตอนที่ 2 เสร็จ

ขั้นตอนที่ 2 - สร้างแอป Github

ไปที่ลิงค์นี้เพื่อสร้างแอป GitHub คุณต้องคัดลอกไฟล์Callback URL จาก Firebase ไปยังไฟล์ Authorization callback URLฟิลด์ เมื่อสร้างแอปแล้วคุณจะต้องคัดลอกไฟล์Client Key และ Client Secret จากแอป GitHub ไปยัง Firebase

ขั้นตอนที่ 3 - สร้างปุ่ม

เราจะเพิ่มปุ่มสองปุ่มในไฟล์ body แท็ก

index.html

<button onclick = "githubSignin()">Github Signin</button>
<button onclick = "githubSignout()">Github Signout</button>

ขั้นตอนที่ 4 - สร้างฟังก์ชันการตรวจสอบสิทธิ์

เราจะสร้างฟังก์ชันสำหรับการลงชื่อเข้าใช้และออกจากระบบภายในไฟล์ index.js ไฟล์.

index.js

var provider = new firebase.auth.GithubAuthProvider();

function githubSignin() {
   firebase.auth().signInWithPopup(provider)
   
   .then(function(result) {
      var token = result.credential.accessToken;
      var user = result.user;
		
      console.log(token)
      console.log(user)
   }).catch(function(error) {
      var errorCode = error.code;
      var errorMessage = error.message;
		
      console.log(error.code)
      console.log(error.message)
   });
}

function githubSignout(){
   firebase.auth().signOut()
   
   .then(function() {
      console.log('Signout successful!')
   }, function(error) {
      console.log('Signout failed')
   });
}

ตอนนี้เราสามารถคลิกที่ปุ่มเพื่อเริ่มการตรวจสอบสิทธิ์ คอนโซลจะแสดงว่าการรับรองความถูกต้องสำเร็จ

ในบทนี้เราจะตรวจสอบผู้ใช้โดยไม่ระบุตัวตน

ขั้นตอนที่ 1 - เปิดใช้งาน Anonymous Auth

นี่เป็นกระบวนการเดียวกับในบทก่อนหน้าของเรา คุณต้องเปิดแดชบอร์ด Firebase คลิกที่Auth จากเมนูด้านข้างและ SIGN-IN-METHODภายในแถบแท็บ คุณต้องเปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุตัวตน

ขั้นตอนที่ 2 - ฟังก์ชันการลงชื่อเข้าใช้

เราสามารถใช้ signInAnonymously() วิธีการตรวจสอบนี้

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

firebase.auth().signInAnonymously()
.then(function() {
   console.log('Logged in as Anonymous!')
   
   }).catch(function(error) {
   var errorCode = error.code;
   var errorMessage = error.message;
   console.log(errorCode);
   console.log(errorMessage);
});

ในบทนี้เราจะแสดงวิธีจัดการสถานะการเชื่อมต่อ Firebase

ตรวจสอบการเชื่อมต่อ

เราสามารถตรวจสอบมูลค่าการเชื่อมต่อโดยใช้รหัสต่อไปนี้

index.js

var connectedRef = firebase.database().ref(".info/connected");

connectedRef.on("value", function(snap) {
   if (snap.val() === true) {
      alert("connected");
   } else {
      alert("not connected");
   }
});

เมื่อเราเรียกใช้แอปป๊อปอัปจะแจ้งให้เราทราบเกี่ยวกับการเชื่อมต่อ

ด้วยการใช้ฟังก์ชันที่กำหนดข้างต้นคุณสามารถติดตามสถานะการเชื่อมต่อและอัปเดตแอปของคุณได้

ความปลอดภัยใน Firebase ได้รับการจัดการโดยการตั้งค่า JSON like object ภายในกฎความปลอดภัย กฎความปลอดภัยสามารถพบได้เมื่อเราคลิกที่Database ภายในเมนูด้านข้างแล้ว RULES ในแถบแท็บ

ในบทนี้เราจะพูดถึงตัวอย่างง่ายๆสองสามตัวอย่างเพื่อแสดงวิธีการรักษาความปลอดภัยข้อมูล Firebase

อ่านและเขียน

ข้อมูลโค้ดต่อไปนี้ที่กำหนดไว้ในกฎความปลอดภัยของ Firebase จะอนุญาตให้เข้าถึงการเขียนได้ /users/'$uid'/ สำหรับผู้ใช้ที่ได้รับการรับรองความถูกต้องเดียวกัน uidแต่ทุกคนสามารถอ่านได้

ตัวอย่าง

ขอให้เราพิจารณาตัวอย่างต่อไปนี้.

{
   "rules": {
      "users": {
         
         "$uid": {
            ".write": "$uid === auth.uid",
            ".read": true
         }
         
      }
   }
}

ตรวจสอบ

เราสามารถบังคับใช้ข้อมูลเป็นสตริงโดยใช้ตัวอย่างต่อไปนี้

ตัวอย่าง

{
   "rules": {
      
      "foo": {
         ".validate": "newData.isString()"
      }
      
   }
}

บทนี้ใช้เฉพาะพื้นผิวของกฎความปลอดภัย Firebase สิ่งสำคัญคือต้องเข้าใจว่ากฎเหล่านี้ทำงานอย่างไรคุณจึงสามารถรวมเข้ากับแอปได้

ในบทนี้เราจะแสดงวิธีโฮสต์แอปของคุณบนเซิร์ฟเวอร์ Firebase

ก่อนที่เราจะเริ่มให้เราเพิ่มข้อความลงไป index.htmlแท็กร่างกาย ในตัวอย่างนี้เราจะเพิ่มข้อความต่อไปนี้

<h1>WELCOME TO FIREBASE TUTORIALS APP</h1>

ขั้นตอนที่ 1 - ติดตั้งเครื่องมือ Firebase

เราจำเป็นต้องติดตั้งเครื่องมือ firebase ทั่วโลกในไฟล์ command prompt หน้าต่าง.

npm install -g firebase-tools

ขั้นตอนที่ 2 - เริ่มต้นแอป Firebase

ก่อนอื่นเราต้องลงชื่อเข้าใช้ Firebase ในไฟล์ command prompt.

firebase login

เปิดโฟลเดอร์รูทของแอพของคุณในไฟล์ command prompt และรันคำสั่งต่อไปนี้

firebase init

คำสั่งนี้จะเริ่มต้นแอปของคุณ

NOTE - หากคุณใช้การกำหนดค่าเริ่มต้นไฟล์ public โฟลเดอร์จะถูกสร้างขึ้นและไฟล์ index.htmlภายในโฟลเดอร์นี้จะเป็นจุดเริ่มต้นของแอปของคุณ คุณสามารถคัดลอกไฟล์แอปของคุณภายในโฟลเดอร์สาธารณะเพื่อเป็นวิธีแก้ปัญหาได้

ขั้นตอนที่ 3 - ทำให้แอป Firebase ใช้งานได้

นี่เป็นขั้นตอนสุดท้ายในบทนี้ รันคำสั่งต่อไปนี้จากไฟล์command prompt เพื่อปรับใช้แอปของคุณ

firebase deploy

หลังจากขั้นตอนนี้คอนโซลจะบันทึก URL Firebase ของแอปของคุณ ในกรณีของเราเรียกว่าhttps://tutorialsfirebase.firebaseapp.com. เราสามารถเรียกใช้ลิงค์นี้ในเบราว์เซอร์เพื่อดูแอปของเรา