Google Identity Toolkit เวอร์ชันล่าสุดได้เปิดตัวเป็นการตรวจสอบสิทธิ์ Firebase แล้ว นับจากนี้ไป เราจะหยุดการพัฒนาฟีเจอร์ใน Identity Toolkit และการพัฒนาฟีเจอร์ใหม่ทั้งหมดจะดำเนินการในการตรวจสอบสิทธิ์ Firebase เราขอแนะนำให้นักพัฒนา Identity Toolkit เปลี่ยนไปใช้ Firebase Authentication โดยเร็วที่สุดเท่าที่จะทำได้สำหรับแอปพลิเคชันของตน อย่างไรก็ตาม Identity Toolkit จะยังคงใช้งานได้ต่อไปและจะไม่เลิกใช้งานโดยไม่มีการประกาศเพิ่มเติม
ฟีเจอร์ใหม่
การตรวจสอบสิทธิ์ Firebase มีการปรับปรุงฟีเจอร์ที่สำคัญบางอย่างเหนือกว่า Google Identity Toolkit อยู่แล้ว ดังนี้
เข้าถึง Firebase ทั้งหมด
Firebase เป็นแพลตฟอร์มบนอุปกรณ์เคลื่อนที่ที่ช่วยให้คุณสามารถพัฒนาแอปคุณภาพสูง ขยายฐานผู้ใช้ และสร้างรายได้เพิ่มได้อย่างรวดเร็ว Firebase ประกอบด้วยฟีเจอร์เสริมที่คุณสามารถผสมผสานให้เหมาะกับความต้องการ และประกอบด้วยโครงสร้างพื้นฐานสําหรับข้อมูลวิเคราะห์บนอุปกรณ์เคลื่อนที่, การรับส่งข้อความบนระบบคลาวด์, ฐานข้อมูลแบบเรียลไทม์, พื้นที่เก็บข้อมูลไฟล์, โฮสติ้งแบบคงที่, การกําหนดค่าระยะไกล, การรายงานข้อขัดข้องบนอุปกรณ์เคลื่อนที่ และการทดสอบ Android
UI ที่อัปเดต
เราได้สร้างขั้นตอน UI ขึ้นใหม่ทั้งหมดโดยอิงตามการวิจัย UX ล่าสุดของ Google ซึ่งรวมถึงการกู้คืนรหัสผ่าน การลิงก์บัญชี ขั้นตอนการแยกแยะบัญชีใหม่/ที่มีอยู่ ซึ่งมักใช้เวลานานในการเขียนโค้ดและแก้ไขข้อบกพร่อง โดยผสานรวม Smart Lock สำหรับรหัสผ่านใน Android ซึ่งช่วยปรับปรุง Conversion การลงชื่อเข้าใช้และการลงชื่อสมัครใช้แอปที่เข้าร่วมได้อย่างมาก นอกจากนี้ยังรองรับการแก้ไขธีมง่ายๆ เพื่อให้เข้ากับแอปพลิเคชันของคุณ และเวอร์ชัน Android และ iOS ยังเป็นโอเพนซอร์สเพื่อให้ปรับแต่งได้สูงสุด
การตั้งค่าเซิร์ฟเวอร์ที่ง่ายดาย
เราทำให้นักพัฒนาแอปใช้ Firebase Authentication ได้ง่ายขึ้น เมื่อใช้ Identity Toolkit เราพบว่านักพัฒนาแอปจำนวนมากเลือกที่จะไม่ใช้ขั้นตอนการกู้คืนอีเมล ซึ่งทำให้ผู้ใช้กู้คืนบัญชีไม่ได้หากลืมรหัสผ่าน การตรวจสอบสิทธิ์ 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 Authentication ขณะที่ฟีเจอร์อื่นๆ ได้รับการออกแบบใหม่และทำงานต่างกัน คุณอาจเลือกที่จะไม่ย้ายข้อมูลทันทีหากฟีเจอร์เหล่านี้สำคัญต่อแอปของคุณ ในหลายกรณี ฟีเจอร์เหล่านี้อาจไม่สำคัญต่อแอปของคุณ หรืออาจมีวิธีแก้ปัญหาสำรองที่ง่ายดายซึ่งจะช่วยให้คุณย้ายข้อมูลต่อได้
ความแตกต่างฝั่งเซิร์ฟเวอร์
บริการ 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 Authentication แล้ว
ความแตกต่างฝั่งไคลเอ็นต์
ใน Firebase ฟีเจอร์ที่ Google Identity Toolkit มีให้จะแบ่งออกเป็น 2 ส่วนดังนี้
Firebase Authentication SDK
ใน Firebase Authentication ฟังก์ชันการทำงานที่ REST API ของ Identity Toolkit มีให้ได้รับการบรรจุไว้ใน SDK ของไคลเอ็นต์สำหรับ Android, iOS และ JavaScript คุณสามารถใช้ SDK เพื่อลงชื่อเข้าใช้และลงชื่อสมัครใช้ของผู้ใช้ เข้าถึงข้อมูลโปรไฟล์ของผู้ใช้ ลิงก์ อัปเดต และลบบัญชี รวมถึงรีเซ็ตรหัสผ่านได้โดยใช้ SDK ของไคลเอ็นต์แทนการติดต่อกับบริการแบ็กเอนด์ผ่านการเรียก REST
FirebaseUI Auth
เราได้สร้างขั้นตอนการลงชื่อเข้าใช้ ลงชื่อสมัครใช้ การกู้คืนรหัสผ่าน และการลิงก์บัญชีทั้งหมดใน UI ขึ้นมาใหม่โดยใช้ Firebase Authentication SDK ซึ่งพร้อมใช้งานเป็น SDK แบบโอเพนซอร์สสําหรับ iOS และ Android เพื่อให้คุณปรับแต่งขั้นตอนต่างๆ ได้อย่างสมบูรณ์ในลักษณะที่ Identity Toolkit ไม่สามารถทำได้
ความแตกต่างเพิ่มเติมมีดังนี้
เซสชันและการย้ายข้อมูล
เนื่องจากเซสชันได้รับการจัดการแตกต่างกันใน Identity Toolkit และ Firebase Authentication เซสชันที่มีอยู่ของผู้ใช้จะสิ้นสุดลงเมื่ออัปเกรด SDK และผู้ใช้จะต้องลงชื่อเข้าใช้อีกครั้ง
ก่อนเริ่มต้น
คุณต้องดำเนินการต่อไปนี้ก่อนจึงจะย้ายข้อมูลจาก Identity Toolkit ไปยัง Firebase Authentication ได้
เปิดคอนโซล Firebase แล้วคลิกนําเข้าโปรเจ็กต์ Google แล้วเลือกโปรเจ็กต์ Identity Toolkit
คลิก settings > สิทธิ์เพื่อเปิดหน้า IAM และผู้ดูแลระบบ
เปิดบัญชีบริการ คุณจะเห็นบัญชีบริการที่กําหนดค่าไว้ก่อนหน้านี้สําหรับ Identity Toolkit
ถัดจากบัญชีบริการ ให้คลิกmore_vert > สร้างคีย์ จากนั้นในกล่องโต้ตอบสร้างคีย์ส่วนตัว ให้ตั้งค่าประเภทคีย์เป็น JSON แล้วคลิกสร้าง ระบบจะดาวน์โหลดไฟล์ JSON ที่มีข้อมูลเข้าสู่ระบบของบัญชีบริการให้คุณ คุณต้องใช้ข้อมูลนี้เพื่อเริ่มต้น SDK ในขั้นตอนถัดไป
กลับไปที่คอนโซล Firebase ในส่วนการตรวจสอบสิทธิ์ ให้เปิดหน้าเทมเพลตอีเมล ในหน้านี้ ให้ปรับแต่งเทมเพลตอีเมลของแอป
ใน Identity Toolkit เมื่อผู้ใช้รีเซ็ตรหัสผ่าน เปลี่ยนอีเมล และยืนยันอีเมล คุณต้องรับรหัส OOB จากเซิร์ฟเวอร์ Identity Toolkit แล้วส่งรหัสดังกล่าวให้ผู้ใช้ทางอีเมล Firebase จะส่งอีเมลตามเทมเพลตที่คุณกําหนดค่าโดยที่คุณไม่ต้องดําเนินการใดๆ เพิ่มเติม
ไม่บังคับ: หากต้องการเข้าถึงบริการ Firebase บนเซิร์ฟเวอร์ ให้ติดตั้ง Firebase SDK
คุณติดตั้งโมดูล Node.js ของ Firebase ด้วย
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 Authentication เพื่อรักษาเซสชันให้ใหม่อยู่เสมอ แบ็กเอนด์จะสิ้นสุดเซสชันเมื่อมีการเปลี่ยนแปลงที่สำคัญในบัญชี (เช่น การเปลี่ยนแปลงรหัสผ่านของผู้ใช้) ระบบจะไม่ตั้งค่าโทเค็นระบุตัวตน Firebase เป็นคุกกี้ในเว็บไคลเอ็นต์โดยอัตโนมัติ และโทเค็นดังกล่าวมีอายุเพียง 1 ชั่วโมง โทเค็นระบุตัวตน Firebase ไม่เหมาะที่จะใช้เป็นคุกกี้เพื่อตรวจสอบคําขอหน้าเว็บทั้งหมด เว้นแต่คุณต้องการเซสชันเพียง 1 ชั่วโมง แต่คุณจะต้องตั้งค่า Listener สำหรับเวลาที่ผู้ใช้เข้าสู่ระบบ รับโทเค็นระบุตัวตน Firebase ตรวจสอบโทเค็น และสร้างคุกกี้ของคุณเองผ่านระบบการจัดการคุกกี้ของเฟรมเวิร์ก
คุณจะต้องตั้งค่าอายุของเซสชันคุกกี้ตามความต้องการด้านความปลอดภัยของแอปพลิเคชัน
ขั้นตอนการลงชื่อเข้าใช้บนเว็บ
ก่อนหน้านี้ ระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยัง
accountchooser.com
เมื่อเริ่มลงชื่อเข้าใช้เพื่อดูว่าผู้ใช้ต้องการใช้ตัวระบุใด ตอนนี้โฟลว์ของ Firebase Auth UI จะเริ่มด้วยรายการวิธีการลงชื่อเข้าใช้ ซึ่งรวมถึงตัวเลือกอีเมลที่ไปที่accountchooser.com
สำหรับเว็บ และใช้ hintRequest API ใน Android นอกจากนี้ คุณไม่จำเป็นต้องระบุอีเมลใน Firebase UI อีกต่อไป ซึ่งจะช่วยให้รองรับผู้ใช้ที่ไม่ระบุตัวตน ผู้ใช้การตรวจสอบสิทธิ์ที่กำหนดเอง หรือผู้ใช้จากผู้ให้บริการที่ไม่จําเป็นต้องใช้อีเมลได้ง่ายขึ้นวิดเจ็ตการจัดการบัญชี
วิดเจ็ตนี้มี UI ให้ผู้ใช้เปลี่ยนอีเมล เปลี่ยนรหัสผ่าน หรือยกเลิกการลิงก์บัญชีจากผู้ให้บริการข้อมูลประจำตัว ฟีเจอร์นี้อยู่ระหว่างการพัฒนา
ปุ่ม/วิดเจ็ตลงชื่อเข้าใช้
จะไม่มีวิดเจ็ต เช่น ปุ่มลงชื่อเข้าใช้และการ์ดผู้ใช้อีกต่อไป ซึ่งสร้างได้ง่ายๆ โดยใช้ Firebase Authentication API
ไม่มี signOutUrl
คุณจะต้องโทรหา
firebase.auth.signOut()
และจัดการการโทรกลับไม่มี oobActionUrl
ตอนนี้ Firebase จะจัดการการส่งอีเมลและกำหนดค่าในคอนโซล Firebase
การปรับแต่ง CSS
FirebaseUI ใช้การจัดรูปแบบ Material Design Lite ซึ่งจะเพิ่มภาพเคลื่อนไหวของ Material Design แบบไดนามิก
ขั้นตอนที่ 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 หรือ Identity Toolkit SDK เพื่อตรวจสอบโทเค็นหรือไม่ หากคุณมีเพียงเว็บแอปพลิเคชัน ระบบจะย้ายคำขอการตรวจสอบสิทธิ์ใหม่ทั้งหมดไปยัง Firebase คุณจึงต้องใช้วิธีการยืนยันโทเค็น Firebase เท่านั้น
ดูข้อมูลอ้างอิง Firebase Web API
ขั้นตอนที่ 2: อัปเดต HTML
เพิ่มโค้ดเริ่มต้น Firebase ลงในแอป
- เปิดโปรเจ็กต์ในคอนโซล Firebase
- ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ลงในเว็บแอป ข้อมูลโค้ดที่เริ่มต้น Firebase จะปรากฏขึ้น
- คัดลอกและวางข้อมูลโค้ดเริ่มต้นลงในหน้าเว็บ
เพิ่ม FirebaseUI Auth ลงในแอป
<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>
นำ SDK ของ Identity Toolkit ออกจากแอป
หากคุณใช้โทเค็นข้อมูลประจำตัวของ 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 ในคอนโซลนักพัฒนาซอฟต์แวร์ของผู้ให้บริการลงชื่อเข้าใช้
Android
ขั้นตอนที่ 1: เพิ่ม Firebase ไปยังแอป
เปิดคอนโซล Firebase แล้วเลือกโปรเจ็กต์ Identity Toolkit ที่คุณนำเข้าไว้แล้ว
ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ลงในแอป Android ในกล่องโต้ตอบ "เพิ่ม Firebase" ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือของใบรับรองการรับรอง แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกําหนดค่า
google-services.json
ลงในคอมพิวเตอร์คัดลอกไฟล์การกําหนดค่าไปยังไดเรกทอรีรูทของโมดูลแอป Android ไฟล์การกําหนดค่านี้มีข้อมูลโปรเจ็กต์และไคลเอ็นต์ Google OAuth
ในไฟล์
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.1.0' compile 'com.google.android.gms:play-services-auth:21.3.0'
ขั้นตอนที่ 2: นํา SDK ของ Identity Toolkit ออก
- นำการกำหนดค่า Identity Toolkit ออกจากไฟล์
AndroidManifest.xml
ข้อมูลนี้จะรวมอยู่ในไฟล์google-service.json
และโหลดโดยปลั๊กอิน google-services - นำ SDK ของ Identity Toolkit ออกจากแอป
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่ม FirebaseUI Auth ลงในแอป
ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI
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: นํา SDK ของ Identity Toolkit ออก
- นำ
GoogleIdentityToolkit
ออกจาก Podfile ของแอป - เรียกใช้คำสั่ง
pod install
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่ม FirebaseUI Auth ลงในแอป
ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI