Google Identity Toolkit เวอร์ชันล่าสุดได้เปิดตัวแล้วในชื่อการตรวจสอบสิทธิ์ของ Firebase นับจากนี้เป็นต้นไป งานฟีเจอร์ใน Identity Toolkit จะถูกระงับชั่วคราวและการพัฒนาฟีเจอร์ใหม่ทั้งหมดจะดำเนินการในการตรวจสอบสิทธิ์ Firebase เราขอแนะนำให้นักพัฒนา Identity Toolkit เปลี่ยนไปใช้การตรวจสอบสิทธิ์ของ Firebase โดยเร็วที่สุดสำหรับการใช้งานจริงสำหรับแอปพลิเคชันของตน อย่างไรก็ตาม Identity Toolkit จะยังคงทำงานต่อไปและจะไม่เลิกใช้งานหากไม่มีการประกาศเพิ่มเติม
ฟีเจอร์ใหม่
การตรวจสอบสิทธิ์ Firebase มีการปรับปรุงฟีเจอร์สำคัญๆ หลายอย่างผ่าน Google Identity Toolkit อยู่แล้ว ดังนี้
สิทธิ์เข้าถึง Firebase ทั้งหมด
Firebase เป็นแพลตฟอร์มอุปกรณ์เคลื่อนที่ที่ช่วยให้คุณพัฒนาแอปคุณภาพสูง ขยายฐานผู้ใช้ และสร้างรายได้เพิ่มขึ้นได้อย่างรวดเร็ว Firebase ประกอบด้วย ฟีเจอร์เสริมที่คุณสามารถเลือกใช้ให้เข้ากับความต้องการ และ มีโครงสร้างพื้นฐานสำหรับ Analytics บนอุปกรณ์เคลื่อนที่ การรับส่งข้อความในระบบคลาวด์ ฐานข้อมูลแบบเรียลไทม์ พื้นที่เก็บข้อมูลไฟล์ โฮสติ้งแบบคงที่ การกำหนดค่าระยะไกล การรายงานข้อขัดข้องอุปกรณ์เคลื่อนที่ และ Android ทดสอบการทดสอบ
UI ที่อัปเดตแล้ว
เราได้สร้างขั้นตอน UI ขึ้นใหม่ทั้งหมดโดยอิงตามการวิจัย UX ล่าสุดของ Google ซึ่งรวมถึงการกู้คืนรหัสผ่าน การลิงก์บัญชี ขั้นตอนการชี้แจงบัญชีใหม่/ที่มีอยู่ที่มักใช้เวลานานในการเขียนโค้ดและแก้ไขข้อบกพร่อง ผสานรวม Smart Lock สำหรับรหัสผ่าน บน Android ซึ่งช่วยปรับปรุง Conversion การลงชื่อเข้าใช้และการลงชื่อสมัครใช้ สำหรับแอปที่เข้าร่วมได้อย่างมาก นอกจากนี้ ยังรองรับการแก้ไขธีมง่ายๆ เพื่อให้เหมาะกับแอปพลิเคชันของคุณ และหากต้องการความสามารถในการปรับแต่งสูงสุด เวอร์ชัน Android และ iOS จึงเป็นโอเพนซอร์ส
การตั้งค่าเซิร์ฟเวอร์ที่ง่ายขึ้น
เราทำให้นักพัฒนาซอฟต์แวร์ใช้การตรวจสอบสิทธิ์ Firebase ได้ง่ายขึ้น เราเห็นว่านักพัฒนาซอฟต์แวร์จำนวนมากเลือกที่จะไม่ใช้ขั้นตอนการกู้คืนบัญชี ทำให้ผู้ใช้ไม่สามารถกู้คืนบัญชีได้หากลืมรหัสผ่าน การตรวจสอบสิทธิ์ Firebase สามารถส่งการยืนยันอีเมล การรีเซ็ตรหัสผ่าน และข้อความรหัสผ่านที่เปลี่ยนแปลงไปให้กับผู้ใช้ และสามารถปรับแต่งข้อความให้กับผู้ใช้ได้อย่างง่ายดาย นอกจากนี้ คุณไม่จําเป็นต้องโฮสต์วิดเจ็ต UI สําหรับการเปลี่ยนเส้นทางโฮสต์และดำเนินการเปลี่ยนรหัสผ่านให้เสร็จเรียบร้อยอีกต่อไป
คอนโซลผู้ดูแลระบบแบบใหม่
Firebase มีคอนโซลของนักพัฒนาซอฟต์แวร์แบบใหม่และส่วนการตรวจสอบสิทธิ์ให้คุณดู แก้ไข และลบผู้ใช้ได้ นี่จะเป็นตัวช่วยที่ดีในการแก้ไขข้อบกพร่องของขั้นตอนการลงชื่อเข้าใช้และการลงชื่อสมัครใช้ คอนโซลยังช่วยให้คุณกำหนดค่าวิธีการตรวจสอบสิทธิ์และปรับแต่งเทมเพลตอีเมลได้ด้วย
SDK ใหม่
ตอนนี้ API เซิร์ฟเวอร์ของ Identity Toolkit ทั้งหมดมีให้บริการแล้วภายในไลบรารีของไคลเอ็นต์ของเรา (Android, iOS, เว็บ) นักพัฒนาซอฟต์แวร์จะลงชื่อเข้าใช้และลงชื่อสมัครใช้สำหรับผู้ใช้ทั้งเก่าและใหม่ เข้าถึงพร็อพเพอร์ตี้ผู้ใช้ ลิงก์ อัปเดต และลบบัญชี รีเซ็ตรหัสผ่าน และอื่นๆ ได้โดยไม่ต้องเชื่อมโยงกับ UI แบบคงที่ หากต้องการ คุณสามารถสร้างขั้นตอนการลงชื่อเข้าใช้ทั้งหมดด้วยตนเอง พร้อมสัมผัสประสบการณ์การใช้งานนอกเหนือจาก API นี้
การจัดการเซสชันสำหรับแอปบนอุปกรณ์เคลื่อนที่
เมื่อใช้ Identity Toolkit แอปจะสร้างสถานะเซสชันของตนเองตามเหตุการณ์การตรวจสอบสิทธิ์เริ่มแรกจาก Identity Toolkit Firebase Auth ใช้บริการแบ็กเอนด์ที่ใช้โทเค็นการรีเฟรช ที่สร้างจากเหตุการณ์การตรวจสอบสิทธิ์ และแลกเปลี่ยนเป็นโทเค็นเพื่อการเข้าถึงความยาว 1 ชั่วโมงสำหรับ Android, iOS และ JavaScript เมื่อผู้ใช้เปลี่ยนรหัสผ่าน โทเค็นการรีเฟรชจะไม่สามารถสร้างโทเค็นเพื่อการเข้าถึงใหม่ได้อีกต่อไป ดังนั้นจึงมีการปิดการเข้าถึงจนกว่าผู้ใช้จะตรวจสอบสิทธิ์ในอุปกรณ์นั้นอีกครั้ง
การตรวจสอบสิทธิ์ GitHub แบบไม่ระบุชื่อ
การตรวจสอบสิทธิ์ Firebase รองรับการตรวจสอบสิทธิ์ใหม่ 2 ประเภท ได้แก่ GitHub แบบไม่ระบุตัวตน คุณสามารถใช้การลงชื่อเข้าใช้โดยไม่ระบุชื่อเพื่อสร้างรหัสผู้ใช้ที่ไม่ซ้ำโดยไม่ต้องกำหนดให้ผู้ใช้ลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ เมื่อใช้ผู้ใช้ที่ไม่ระบุชื่อ ตอนนี้คุณสามารถเรียก API ที่ตรวจสอบสิทธิ์แล้ว ได้เหมือนกับที่ดำเนินการกับผู้ใช้ทั่วไป เมื่อผู้ใช้ตัดสินใจลงชื่อสมัครใช้บัญชี กิจกรรมทั้งหมดจะยังคงอยู่โดยใช้รหัสผู้ใช้เดียวกัน วิธีนี้เหมาะสำหรับสถานการณ์ต่างๆ เช่น รถเข็นช็อปปิ้งฝั่งเซิร์ฟเวอร์หรือแอปพลิเคชันใดๆ ที่คุณต้องการดึงดูดผู้ใช้ก่อนส่งผ่านขั้นตอนการลงชื่อสมัครใช้
ความแตกต่างของฟีเจอร์
ฟีเจอร์บางอย่างของ Identity Toolkit ยังไม่พร้อมใช้งานในการตรวจสอบสิทธิ์ Firebase ขณะที่ฟีเจอร์อื่นๆ ได้รับการออกแบบใหม่และทำงานแตกต่างออกไป คุณอาจเลือกที่จะไม่ย้ายข้อมูลทันทีหากฟีเจอร์เหล่านี้สำคัญต่อแอปของคุณ ในหลายกรณี ฟีเจอร์เหล่านี้อาจไม่สำคัญสำหรับแอปหรืออาจมีทางเลือกสำรองที่ช่วยให้คุณดำเนินการย้ายข้อมูลได้
ความแตกต่างของฝั่งเซิร์ฟเวอร์
บริการหลักของ Identity Toolkit ที่มี REST API ที่เกี่ยวข้อง, ตรรกะการตรวจสอบบัญชี และฐานข้อมูลผู้ใช้หลักได้รับการอัปเดตเพียงเล็กน้อยเท่านั้น แต่ฟีเจอร์บางอย่างและลักษณะการผสานรวมการตรวจสอบสิทธิ์ Firebase เข้ากับบริการได้มีการเปลี่ยนแปลง
ผู้ให้บริการข้อมูลประจำตัว
ไม่รองรับ PayPal และ AOL ผู้ใช้ที่มีบัญชีจาก IdP เหล่านี้จะยังลงชื่อเข้าใช้แอปพลิเคชันด้วยขั้นตอนการกู้คืนรหัสผ่านและตั้งรหัสผ่านสำหรับบัญชีของตนเองได้
ไลบรารีของเซิร์ฟเวอร์
ปัจจุบันมี Firebase Admin SDK พร้อมใช้งานสำหรับ Java, Node.js, Python, Go และ C#
อีเมลการจัดการบัญชี
Firebase หรือจากเซิร์ฟเวอร์อีเมลของนักพัฒนาแอปเองก็ได้ โดยการรีเซ็ตรหัสผ่าน การยืนยันอีเมล และข้อความเปลี่ยนอีเมล ปัจจุบันเทมเพลตอีเมลของ Firebase มีการปรับแต่งอย่างจำกัด
การยืนยันการเปลี่ยนอีเมล
ใน Identity Toolkit เมื่อผู้ใช้ตัดสินใจเปลี่ยนอีเมล ระบบจะส่งอีเมลไปยังอีเมลใหม่ที่มีลิงก์เพื่อดำเนินการเปลี่ยนแปลงอีเมลต่อ
Firebase จะยืนยันการเปลี่ยนแปลงอีเมลโดยส่งอีเมลเพิกถอนไปยังอีเมลเดิมพร้อมลิงก์สำหรับเปลี่ยนกลับการเปลี่ยนแปลง
การเปิดตัว IDP
Identity Toolkit สามารถค่อยๆ เพิ่มผู้ให้บริการข้อมูลประจำตัวลงในระบบลงชื่อเข้าใช้ เพื่อให้คุณสามารถทดสอบผลกระทบที่มีต่อคำขอการสนับสนุนได้ มีการนำฟีเจอร์นี้ออกจากการตรวจสอบสิทธิ์ Firebase
ความแตกต่างของฝั่งไคลเอ็นต์
ฟีเจอร์ของ Google Identity Toolkit ใน Firebase จะแบ่งออกเป็น 2 ส่วน ดังนี้
SDK การตรวจสอบสิทธิ์ของ Firebase
ในการตรวจสอบสิทธิ์ Firebase ฟังก์ชัน REST API ของ Identity Toolkit นั้นรวมอยู่ใน SDK ของไคลเอ็นต์ซึ่งพร้อมใช้งานสำหรับ Android, iOS และ JavaScript คุณสามารถใช้ SDK เพื่อลงชื่อเข้าใช้และลงชื่อสมัครใช้ผู้ใช้ เข้าถึงข้อมูลโปรไฟล์ผู้ใช้ ลิงก์ อัปเดต และลบบัญชี รวมถึงรีเซ็ตรหัสผ่านโดยใช้ SDK ของไคลเอ็นต์แทนการสื่อสารกับบริการแบ็กเอนด์ผ่านการเรียก REST
การตรวจสอบสิทธิ์ FirebaseUI
ขั้นตอน UI ทั้งหมดที่จัดการการลงชื่อเข้าใช้ การลงชื่อสมัครใช้ การกู้คืนรหัสผ่าน และการเชื่อมโยงบัญชีได้รับการสร้างขึ้นใหม่โดยใช้ SDK การตรวจสอบสิทธิ์ Frebase โดยมีให้ใช้งานในรูปแบบ SDK โอเพนซอร์สสำหรับ iOS และ Android เพื่อให้คุณปรับแต่งขั้นตอนได้ทั้งหมดในรูปแบบที่ทําไม่ได้ด้วย Identity Toolkit
ความแตกต่างเพิ่มเติมมีดังนี้
เซสชันและการย้ายข้อมูล
เนื่องจากเซสชันมีการจัดการใน Identity Toolkit และ Firebase Authentication แตกต่างกัน เซสชันที่มีอยู่ของผู้ใช้ของคุณจะสิ้นสุดลงเมื่ออัปเกรด SDK และผู้ใช้จะต้องลงชื่อเข้าใช้อีกครั้ง
ก่อนเริ่มต้น
ก่อนที่จะย้ายข้อมูลจาก Identity Toolkit ไปยังการตรวจสอบสิทธิ์ Firebase คุณต้อง
เปิดคอนโซล Firebase คลิกนำเข้าโปรเจ็กต์ Google แล้วเลือกโปรเจ็กต์ Identity Toolkit
คลิก settings > สิทธิ์ เพื่อเปิดหน้า IAM และผู้ดูแลระบบ
เปิดบัญชีบริการ คุณจะดูบัญชีบริการที่กำหนดค่าไว้ก่อนหน้านี้สำหรับ Identity Toolkit ได้
คลิก more_vert > สร้างคีย์ข้างบัญชีบริการ จากนั้นในกล่องโต้ตอบสร้างคีย์ส่วนตัว ให้ตั้งค่าประเภทคีย์เป็น JSON และคลิกสร้าง ระบบจะดาวน์โหลดไฟล์ JSON ที่มีข้อมูลเข้าสู่ระบบของบัญชีบริการให้คุณ คุณจะต้องใช้คีย์นี้เพื่อเริ่มต้น SDK ในขั้นตอนถัดไป
กลับไปที่คอนโซล Firebase เปิดหน้าเทมเพลตอีเมลในส่วนการตรวจสอบสิทธิ์ ในหน้านี้ ให้ปรับแต่งเทมเพลตอีเมลของแอป
ใน Identity Toolkit เมื่อผู้ใช้รีเซ็ตรหัสผ่าน เปลี่ยนอีเมล และยืนยันอีเมลแล้ว คุณจะต้องรับรหัส OOB จากเซิร์ฟเวอร์ Identity Toolkit แล้วส่งรหัสให้ผู้ใช้ทางอีเมล Firebase จะส่งอีเมลตามเทมเพลตที่คุณกำหนดค่าไว้โดยไม่ต้องดำเนินการใดๆ เพิ่มเติม
ไม่บังคับ: หากต้องการเข้าถึงบริการ Firebase บนเซิร์ฟเวอร์ ให้ติดตั้ง Firebase SDK
คุณติดตั้งโมดูล Firebase Node.js ได้ด้วย
npm
ดังนี้$ npm init $ npm install --save firebase-admin
ในโค้ด คุณจะเข้าถึง Firebase ได้โดยใช้สิ่งต่อไปนี้
var admin = require('firebase-admin'); var app = admin.initializeApp({ credential: admin.credential.cert('path/to/serviceAccountCredentials.json') });
จากนั้นให้ทำตามขั้นตอนการย้ายข้อมูลสำหรับแพลตฟอร์มของแอป ซึ่งได้แก่ Android, iOS, เว็บ
เซิร์ฟเวอร์และ JavaScript
การเปลี่ยนแปลงที่สำคัญ
การใช้งาน Firebase จาก Identity Toolkit บนเว็บนั้นแตกต่างกันอีกมากมาย
การจัดการเซสชันของเว็บ
ก่อนหน้านี้เมื่อผู้ใช้ตรวจสอบสิทธิ์โดยใช้วิดเจ็ต Identity Toolkit ระบบจะตั้งค่าคุกกี้ให้กับผู้ใช้ที่ใช้เปิดเครื่องเซสชัน คุกกี้นี้มีอายุการใช้งาน 2 สัปดาห์และใช้เพื่ออนุญาตให้ผู้ใช้ใช้วิดเจ็ตการจัดการบัญชีเพื่อเปลี่ยนรหัสผ่านและอีเมลได้ บางเว็บไซต์ใช้คุกกี้นี้ในการตรวจสอบสิทธิ์คำขอหน้าเว็บอื่นๆ ทั้งหมดในเว็บไซต์ เว็บไซต์อื่นๆ ใช้คุกกี้เพื่อสร้างคุกกี้ของตนเองผ่านระบบการจัดการคุกกี้ของเฟรมเวิร์ก
ปัจจุบัน SDK ของไคลเอ็นต์ Firebase จะจัดการโทเค็นรหัส Firebase และทำงานร่วมกับแบ็กเอนด์ของการตรวจสอบสิทธิ์ Firebase เพื่อให้เซสชันมีข้อมูลล่าสุดอยู่เสมอ แบ็กเอนด์หมดอายุเซสชันเมื่อเกิดการเปลี่ยนแปลงที่สำคัญของบัญชี (เช่น การเปลี่ยนรหัสผ่านของผู้ใช้) โทเค็นรหัส Firebase ไม่ได้มีการตั้งค่าเป็นคุกกี้บนเว็บไคลเอ็นต์โดยอัตโนมัติ และมีอายุเพียง 1 ชั่วโมงเท่านั้น โทเค็นของ Firebase ID ไม่เหมาะที่จะใช้เป็นคุกกี้เพื่อตรวจสอบคำขอหน้าเว็บทั้งหมดได้ เว้นแต่ว่าคุณจะต้องการเซสชันที่ใช้เวลาเพียง 1 ชั่วโมง คุณจะต้องตั้งค่า Listener เมื่อผู้ใช้ลงชื่อเข้าสู่ระบบ รับโทเค็นรหัส Firebase ตรวจสอบโทเค็น และสร้างคุกกี้ของคุณเองผ่านระบบการจัดการคุกกี้ของเฟรมเวิร์ก
คุณจะต้องตั้งค่าอายุการใช้งานเซสชันของคุกกี้ตามความต้องการด้านความปลอดภัยของแอปพลิเคชัน
ขั้นตอนการลงชื่อเข้าใช้เว็บ
ก่อนหน้านี้ ระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยัง
accountchooser.com
เมื่อเริ่มลงชื่อเข้าใช้เพื่อดูตัวระบุที่ผู้ใช้ต้องการใช้ ตอนนี้ขั้นตอนของ UI การตรวจสอบสิทธิ์ Firebase เริ่มต้นด้วยรายการวิธีการลงชื่อเข้าใช้ ซึ่งรวมถึงตัวเลือกอีเมลซึ่งจะไปที่accountchooser.com
สำหรับเว็บและใช้ hintRequest API ใน Android นอกจากนี้ คุณไม่จำเป็นต้องมีอีเมลใน UI ของ Firebase อีกต่อไป วิธีนี้ช่วยให้การสนับสนุนผู้ใช้ที่ไม่ระบุชื่อ ผู้ใช้การตรวจสอบสิทธิ์ที่กำหนดเอง หรือผู้ใช้จากผู้ให้บริการที่ไม่จำเป็นต้องใช้ที่อยู่อีเมลทำได้ง่ายขึ้นวิดเจ็ตการจัดการบัญชี
วิดเจ็ตนี้มี UI เพื่อให้ผู้ใช้เปลี่ยนอีเมล เปลี่ยนรหัสผ่าน หรือยกเลิกการลิงก์บัญชีจากผู้ให้บริการข้อมูลประจำตัว ซึ่งขณะนี้อยู่ระหว่าง การพัฒนา
ปุ่ม/วิดเจ็ตลงชื่อเข้าใช้
ไม่มีวิดเจ็ต เช่น ปุ่มลงชื่อเข้าใช้และการ์ดผู้ใช้ให้บริการอีกต่อไป ซึ่งสร้างได้ง่ายๆ โดยใช้ Firebase Authentication API
ไม่มี signOutUrl
คุณจะต้องโทรหา
firebase.auth.signOut()
และจัดการการติดต่อกลับไม่มี oobActionUrl
ตอนนี้ Firebase จะเป็นผู้จัดการการส่งอีเมลและได้รับการกำหนดค่าในคอนโซล Firebase
การปรับแต่ง CSS
Firebase UI ใช้การจัดรูปแบบ Material Design Lite ซึ่งจะเพิ่มภาพเคลื่อนไหวของดีไซน์ Material แบบไดนามิก
ขั้นตอนที่ 1: เปลี่ยนรหัสเซิร์ฟเวอร์
หากเซิร์ฟเวอร์ของคุณใช้โทเค็น Identity Toolkit (ใช้ได้เป็นเวลา 2 สัปดาห์) ในการจัดการเซสชันของผู้ใช้เว็บ คุณจะต้องแปลงเซิร์ฟเวอร์ให้ใช้คุกกี้เซสชันของตนเอง
- ใช้ปลายทางสำหรับการตรวจสอบโทเค็นรหัส Firebase และตั้งค่าคุกกี้ของเซสชันสำหรับผู้ใช้ แอปไคลเอ็นต์จะส่งโทเค็นรหัส Firebase ไปยังปลายทางนี้
- ถ้าคำขอที่เข้ามามีคุกกี้เซสชันของคุณเอง คุณสามารถพิจารณาผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว มิฉะนั้น ให้ถือว่าคำขอดังกล่าว ผ่านการตรวจสอบสิทธิ์
- หากไม่ต้องการให้ผู้ใช้รายใดเสียเซสชันที่ลงชื่อเข้าใช้อยู่ คุณควรรอ 2 สัปดาห์เพื่อให้โทเค็น Identity Toolkit ทั้งหมดหมดอายุ หรือทำการตรวจสอบโทเค็นคู่สำหรับเว็บแอปพลิเคชันตามที่อธิบายไว้ด้านล่างในขั้นตอนที่ 3
ขั้นต่อไป เนื่องจากโทเค็น Firebase ต่างจากโทเค็น Identity Toolkit คุณจึงต้องอัปเดตตรรกะการตรวจสอบโทเค็น ติดตั้ง Firebase Server SDK ไปยังเซิร์ฟเวอร์ หรือหากใช้ภาษาที่ Firebase Server SDK ไม่รองรับ ให้ดาวน์โหลดไลบรารีการตรวจสอบโทเค็น JWT สำหรับสภาพแวดล้อมและตรวจสอบโทเค็นให้ถูกต้อง
เมื่อทำการอัปเดตข้างต้นเป็นครั้งแรก คุณอาจยังมีเส้นทางโค้ดที่ต้องใช้โทเค็น Identity Toolkit หากคุณมีแอปพลิเคชัน iOS หรือ Android ผู้ใช้จะต้องอัปเกรดเป็นแอปเวอร์ชันใหม่เพื่อให้เส้นทางโค้ดใหม่ใช้งานได้ หากไม่ต้องการบังคับให้ผู้ใช้อัปเดตแอป คุณสามารถเพิ่มตรรกะการตรวจสอบเซิร์ฟเวอร์เพิ่มเติมที่จะตรวจสอบโทเค็น และกำหนดว่าต้องใช้ Firebase SDK หรือ SDK ของ Identity Toolkit เพื่อตรวจสอบโทเค็น หากคุณมีเฉพาะเว็บแอปพลิเคชัน คำขอการตรวจสอบสิทธิ์ใหม่ทั้งหมดจะย้ายไปที่ Firebase คุณจึงต้องใช้เพียงวิธีการยืนยันโทเค็น Firebase
ดูเอกสารอ้างอิง Firebase Web API
ขั้นตอนที่ 2: อัปเดต HTML ของคุณ
เพิ่มโค้ดการเริ่มต้น Firebase ลงในแอปโดยทำดังนี้
- เปิดโปรเจ็กต์ในคอนโซล Firebase
- ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ไปยังเว็บแอป ระบบจะแสดงข้อมูลโค้ดที่เริ่มต้น Firebase
- คัดลอกและวางข้อมูลโค้ดการเริ่มต้นลงในหน้าเว็บ
เพิ่มการตรวจสอบสิทธิ์ FirebaseUI ลงในแอป
<script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script> <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" /> <!-- ******************************************************************************************* * TODO(DEVELOPER): Paste the initialization snippet from: * Firebase Console > Overview > Add Firebase to your web app. * ***************************************************************************************** --> <script type="text/javascript"> // FirebaseUI config. var uiConfig = { 'signInSuccessUrl': '<url-to-redirect-to-on-success>', 'signInOptions': [ // Leave the lines as is for the providers you want to offer your users. firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.FacebookAuthProvider.PROVIDER_ID, firebase.auth.TwitterAuthProvider.PROVIDER_ID, firebase.auth.GithubAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID ], // Terms of service url. 'tosUrl': '<your-tos-url>', }; // Initialize the FirebaseUI Widget using Firebase. var ui = new firebaseui.auth.AuthUI(firebase.auth()); // The start method will wait until the DOM is loaded. ui.start('#firebaseui-auth-container', uiConfig); </script>
นำ Identity Toolkit SDK ออกจากแอป
หากใช้โทเค็นรหัส Identity Toolkit ในการจัดการเซสชัน คุณต้องทำการเปลี่ยนแปลงต่อไปนี้ในฝั่งไคลเอ็นต์
หลังจากลงชื่อเข้าใช้ด้วย Firebase สำเร็จแล้ว ให้รับโทเค็นรหัส Firebase โดยโทรหา
firebase.auth().currentUser.getToken()
ส่งโทเค็นรหัส Firebase ไปยังเซิร์ฟเวอร์แบ็กเอนด์ ตรวจสอบความถูกต้อง และออกคุกกี้เซสชันของคุณเอง
อย่าพึ่งพาคุกกี้เซสชันเพียงอย่างเดียวเมื่อดำเนินการดำเนินการที่มีความละเอียดอ่อน หรือส่งคำขอแก้ไขที่ได้รับการตรวจสอบสิทธิ์ไปยังเซิร์ฟเวอร์ของคุณ คุณจะต้องให้การป้องกันการปลอมแปลงคำขอแบบข้ามเว็บไซต์ (CSRF) เพิ่มเติม
หากเฟรมเวิร์กของคุณไม่ให้การป้องกัน CSRF วิธีหนึ่งในการป้องกันการโจมตีก็คือการรับโทเค็นรหัส Firebase สำหรับผู้ใช้ที่ลงชื่อเข้าใช้ด้วย
getToken()
และใส่โทเค็นไปกับคำขอแต่ละรายการ (คุกกี้เซสชันจะส่งโดยค่าเริ่มต้นด้วย) จากนั้นให้ตรวจสอบโทเค็นดังกล่าวโดยใช้ SDK เซิร์ฟเวอร์ของ Firebase เพิ่มเติมจากการตรวจสอบคุกกี้ของเซสชัน ซึ่งเฟรมเวิร์กแบ็กเอนด์ของคุณได้ทำงานแล้ว ซึ่งจะทำให้การโจมตี CSRF สำเร็จได้ยากขึ้น เนื่องจากโทเค็นรหัส Firebase จะจัดเก็บโดยใช้พื้นที่เก็บข้อมูลบนเว็บเท่านั้นและไม่มีในคุกกี้โทเค็น Identity Toolkit จะใช้ได้เป็นเวลา 2 สัปดาห์ คุณอาจต้องออกโทเค็นต่อไปซึ่งมีอายุ 2 สัปดาห์ หรือกำหนดระยะเวลาให้ยาวขึ้นหรือสั้นลงตามข้อกำหนดด้านความปลอดภัยของแอป เมื่อผู้ใช้ออกจากระบบ ให้ล้างคุกกี้ของเซสชัน
ขั้นตอนที่ 3: อัปเดต URL เปลี่ยนเส้นทาง IDP
ในคอนโซล Firebase ให้เปิดส่วนการตรวจสอบสิทธิ์แล้วคลิกแท็บวิธีการลงชื่อเข้าใช้
สำหรับผู้ให้บริการการลงชื่อเข้าใช้แบบรวมศูนย์แต่ละรายที่คุณรองรับ ให้ทำดังนี้
- คลิกชื่อผู้ให้บริการการลงชื่อเข้าใช้
- คัดลอก URI การเปลี่ยนเส้นทาง OAuth
- อัปเดต URI การเปลี่ยนเส้นทาง OAuth ใน Developer Console ของผู้ให้บริการการลงชื่อเข้าใช้
Android
ขั้นตอนที่ 1: เพิ่ม Firebase ไปยังแอปของคุณ
เปิดคอนโซล Firebase แล้วเลือกโปรเจ็กต์ Identity Toolkit ที่คุณได้นำเข้าแล้ว
ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ไปยังแอป Android ในกล่องโต้ตอบ "เพิ่ม Firebase" ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือของใบรับรองที่ลงนาม แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า
google-services.json
ลงในคอมพิวเตอร์คัดลอกไฟล์การกำหนดค่าไปยังไดเรกทอรีรากโมดูลของแอป Android ไฟล์การกำหนดค่านี้ประกอบด้วยข้อมูลโปรเจ็กต์และไคลเอ็นต์ OAuth ของ Google
ในไฟล์
build.gradle
ระดับโปรเจ็กต์ (<var>your-project</var>/build.gradle
) ให้ระบุชื่อแพ็กเกจของแอปในส่วนdefaultConfig
defaultConfig { ….. applicationId "com.your-app" }
นอกจากนี้ในไฟล์
build.gradle
ระดับโปรเจ็กต์ ให้เพิ่มทรัพยากร Dependency เพื่อรวมปลั๊กอิน google-services ดังนี้buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }
ในไฟล์
build.gradle
ระดับแอปของแอป (<var>my-project</var>/<var>app-module</var>/build.gradle
) ให้เพิ่มบรรทัดต่อไปนี้ที่ด้านล่างเพื่อเปิดใช้ปลั๊กอิน google-services// Add to the bottom of the file apply plugin: 'com.google.gms.google-services'
ปลั๊กอิน google-services จะใช้ไฟล์
google-services.json
เพื่อกำหนดค่าแอปพลิเคชันให้ใช้ Firebaseนอกจากนี้ในไฟล์
build.gradle
ระดับแอป ให้เพิ่มทรัพยากร Dependency ของการตรวจสอบสิทธิ์ Firebase ดังนี้compile 'com.google.firebase:firebase-auth:23.0.0' compile 'com.google.android.gms:play-services-auth:21.2.0'
ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก
- นำการกำหนดค่า Identity Toolkit ออกจากไฟล์
AndroidManifest.xml
ข้อมูลนี้รวมอยู่ในไฟล์google-service.json
และโหลดโดยปลั๊กอิน google-services - นำ Identity Toolkit SDK ออกจากแอป
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่มการตรวจสอบสิทธิ์ FirebaseUI ลงในแอป
ในแอป ให้ใช้การเรียก FirebaseUI แทนการเรียกใช้ Identity Toolkit SDK
iOS
ขั้นตอนที่ 1: เพิ่ม Firebase ไปยังแอปของคุณ
เพิ่ม Firebase SDK ลงในแอปโดยเรียกใช้คำสั่งต่อไปนี้
$ cd your-project directory $ pod init $ pod 'Firebase'
เปิดคอนโซล Firebase แล้วเลือกโปรเจ็กต์ Identity Toolkit ที่คุณได้นำเข้าแล้ว
ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ไปยังแอป iOS ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุรหัสชุดของแอปและรหัส App Store จากนั้นคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า
GoogleService-Info.plist
ลงในคอมพิวเตอร์ หากคุณมีรหัสชุดหลายรายการในโปรเจ็กต์ รหัสชุดแต่ละรายการต้องเชื่อมต่อในคอนโซล Firebase เพื่อให้มีไฟล์GoogleService-Info.plist
ของตัวเองคัดลอกไฟล์การกำหนดค่าไปยังรูทของโปรเจ็กต์ Xcode แล้วเพิ่มลงในเป้าหมายทั้งหมด
ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก
- นำ
GoogleIdentityToolkit
ออกจาก Podfile ของแอป - เรียกใช้คำสั่ง
pod install
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่มการตรวจสอบสิทธิ์ FirebaseUI ลงในแอป
ในแอป ให้ใช้การเรียก FirebaseUI แทนการเรียกใช้ Identity Toolkit SDK