ย้ายข้อมูลจาก Google Identity Toolkit ไปยังการตรวจสอบสิทธิ์ Firebase

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 ได้ง่ายขึ้น Identity Toolkit ทำให้เราเห็นว่านักพัฒนาซอฟต์แวร์จำนวนมากเลือกที่จะไม่ใช้ขั้นตอนการกู้คืนบัญชี ซึ่งทำให้ผู้ใช้กู้คืนบัญชีไม่ได้หากลืมรหัสผ่าน การตรวจสอบสิทธิ์ Firebase สามารถส่งการยืนยันอีเมล รีเซ็ตรหัสผ่าน และการเปลี่ยนแปลงข้อความรหัสผ่านไปยังผู้ใช้ และสามารถปรับแต่งข้อความให้กับผู้ใช้ได้ง่ายๆ นอกจากนี้ คุณไม่จําเป็นต้องโฮสต์วิดเจ็ต UI สําหรับการโฮสต์การเปลี่ยนเส้นทางและการเปลี่ยนรหัสผ่านอีกต่อไป

  • คอนโซลผู้ดูแลระบบแบบใหม่

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

  • 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 เหล่านี้จะยังคงลงชื่อเข้าใช้แอปพลิเคชันของคุณด้วยขั้นตอนการกู้คืนรหัสผ่านและตั้งค่ารหัสผ่านของบัญชีของตนเองได้

  • ไลบรารีของเซิร์ฟเวอร์

    ปัจจุบันมี SDK ผู้ดูแลระบบ Firebase สำหรับ Java, Node.js, Python, Go และ C#

  • อีเมลการจัดการบัญชี

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

  • การยืนยันการเปลี่ยนอีเมล

    ใน Identity Toolkit เมื่อผู้ใช้ตัดสินใจเปลี่ยนอีเมล ระบบจะส่งอีเมลไปยังอีเมลใหม่ที่มีลิงก์เพื่อดำเนินการเปลี่ยนอีเมลต่อไป

    Firebase จะยืนยันการเปลี่ยนแปลงอีเมลโดยส่งอีเมลแจ้งเพิกถอนไปยังอีเมลเก่าพร้อมลิงก์สำหรับเปลี่ยนการเปลี่ยนแปลง

  • การเปิดตัว IDP

    Identity Toolkit สามารถค่อยๆ เพิ่มผู้ให้บริการข้อมูลประจำตัวลงในระบบการลงชื่อเข้าใช้ของคุณ เพื่อที่คุณจะได้ทดสอบผลกระทบที่จะมีต่อคำขอการสนับสนุน มีการนำฟีเจอร์นี้ออกจากการตรวจสอบสิทธิ์ Firebase

ความแตกต่างของฝั่งไคลเอ็นต์

ใน Firebase ฟีเจอร์จาก Google Identity Toolkit จะแบ่งออกเป็น 2 องค์ประกอบดังนี้

  • SDK การตรวจสอบสิทธิ์ของ Firebase

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

  • การตรวจสอบสิทธิ์ FirebaseUI

    ขั้นตอน UI ทั้งหมดที่จัดการการลงชื่อเข้าใช้ การลงชื่อสมัครใช้ การกู้คืนรหัสผ่าน และการลิงก์บัญชีได้รับการสร้างขึ้นใหม่โดยใช้ Frebase Authentication SDK โดยพร้อมให้บริการเป็น SDK โอเพนซอร์สสำหรับ iOS และ Android เพื่อให้คุณปรับแต่งขั้นตอนได้อย่างสมบูรณ์แบบด้วย Identity Toolkit

ความแตกต่างอื่นๆ ได้แก่

  • เซสชันและการย้ายข้อมูล

    เนื่องจากเซสชันมีการจัดการแตกต่างกันใน Identity Toolkit และการตรวจสอบสิทธิ์ Firebase เซสชันที่มีอยู่ของผู้ใช้จะสิ้นสุดลงเมื่ออัปเกรด SDK และผู้ใช้จะต้องลงชื่อเข้าใช้อีกครั้ง

ก่อนเริ่มต้น

ก่อนจะย้ายข้อมูลจาก Identity Toolkit ไปยังการตรวจสอบสิทธิ์ Firebase คุณต้อง

  1. เปิดคอนโซล Firebase คลิกนำเข้าโปรเจ็กต์ Google แล้วเลือกโปรเจ็กต์ Identity Toolkit

  2. คลิก > สิทธิ์ เพื่อเปิดหน้า IAM และผู้ดูแลระบบ

  3. เปิดบัญชีบริการ คุณจะเห็นบัญชีบริการที่เคยกำหนดค่าไว้สำหรับ Identity Toolkit

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

  5. กลับไปที่คอนโซล Firebase ในส่วนการตรวจสอบสิทธิ์ ให้เปิดหน้าเทมเพลตอีเมล ในหน้านี้ ให้ปรับแต่งเทมเพลตอีเมลของแอป

    ใน Identity Toolkit เมื่อผู้ใช้รีเซ็ตรหัสผ่าน เปลี่ยนอีเมล และอีเมลที่ยืนยันแล้ว คุณต้องรับรหัส OOB จากเซิร์ฟเวอร์ Identity Toolkit แล้วส่งรหัสนั้นไปยังผู้ใช้ทางอีเมล Firebase จะส่งอีเมลตามเทมเพลตที่คุณกำหนดค่าโดยไม่ต้องดำเนินการใดๆ เพิ่มเติม

  6. ไม่บังคับ: หากต้องการเข้าถึงบริการ Firebase ในเซิร์ฟเวอร์ ให้ติดตั้ง Firebase SDK

    1. คุณติดตั้งโมดูล Firebase Node.js ได้ด้วย npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. คุณสามารถเข้าถึง Firebase ในโค้ดได้โดยใช้สิ่งต่อไปนี้

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

ขั้นตอนถัดไป ให้ทำตามขั้นตอนการย้ายข้อมูลสำหรับแพลตฟอร์มของแอป ได้แก่ Android, iOS, เว็บ

เซิร์ฟเวอร์และ JavaScript

การเปลี่ยนแปลงสำคัญ

การใช้งาน Firebase จาก Identity Toolkit ในเว็บมีความแตกต่างอีกมากมาย

  • การจัดการเซสชันบนเว็บ

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

    ตอนนี้ไคลเอ็นต์ Firebase SDK จัดการโทเค็นรหัส Firebase และทำงานร่วมกับแบ็กเอนด์ของการตรวจสอบสิทธิ์ Firebase เพื่อทำให้เซสชันอัปเดตอยู่เสมอ เซสชันแบ็กเอนด์จะหมดอายุเมื่อเกิดการเปลี่ยนแปลงที่สำคัญในบัญชี (เช่น การเปลี่ยนรหัสผ่านของผู้ใช้) โทเค็นรหัส Firebase ไม่ได้ถูกตั้งค่าให้เป็นคุกกี้บนเว็บไคลเอ็นต์โดยอัตโนมัติและมีอายุการใช้งานเพียง 1 ชั่วโมง หากคุณไม่ต้องการใช้เซสชันเพียง 1 ชั่วโมง โทเค็นรหัส Firebase ก็ไม่เหมาะที่จะใช้เป็นคุกกี้เพื่อตรวจสอบคำขอหน้าเว็บทั้งหมด โดยคุณจะต้องตั้งค่า Listener แทนเมื่อผู้ใช้ลงชื่อเข้าสู่ระบบ, รับโทเค็นรหัส Firebase, ตรวจสอบโทเค็น และสร้างคุกกี้ของคุณเองผ่านระบบจัดการคุกกี้ของเฟรมเวิร์ก

    คุณจะต้องกำหนดอายุการใช้งานเซสชันของคุกกี้ตามความต้องการด้านความปลอดภัยของแอปพลิเคชัน

  • ขั้นตอนการลงชื่อเข้าใช้ผ่านเว็บ

    ก่อนหน้านี้ ระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยัง accountchooser.com เมื่อเริ่มลงชื่อเข้าใช้เพื่อดูตัวระบุที่ผู้ใช้ต้องการใช้ ขั้นตอน UI ของ Firebase Auth จะเริ่มต้นด้วยรายการวิธีลงชื่อเข้าใช้ ซึ่งรวมถึงตัวเลือกอีเมลที่ส่งไปยัง 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: เปลี่ยนรหัสของเซิร์ฟเวอร์

  1. หากเซิร์ฟเวอร์ของคุณใช้โทเค็น Identity Toolkit (ใช้ได้ 2 สัปดาห์) ในการจัดการเซสชันของผู้ใช้เว็บ คุณจะต้องแปลงเซิร์ฟเวอร์ให้ใช้คุกกี้เซสชันของตัวเอง

    1. ใช้ปลายทางสำหรับการตรวจสอบโทเค็นรหัส Firebase และตั้งค่าคุกกี้เซสชันสำหรับผู้ใช้ แอปไคลเอ็นต์จะส่งโทเค็นรหัส Firebase ไปยังปลายทางนี้
    2. หากคำขอที่เข้ามามีคุกกี้เซสชันของคุณเอง ก็ถือว่าผู้ใช้ได้ตรวจสอบสิทธิ์แล้ว มิฉะนั้น ให้ถือว่าคำขอ เป็นแบบไม่ผ่านการตรวจสอบสิทธิ์
    3. หากคุณไม่ต้องการให้ผู้ใช้สูญเสียเซสชันที่ลงชื่อเข้าสู่ระบบที่มีอยู่ คุณควรรอ 2 สัปดาห์เพื่อให้โทเค็น Identity Toolkit ทั้งหมดหมดอายุ หรือยืนยันโทเค็นคู่สำหรับเว็บแอปพลิเคชันตามที่อธิบายไว้ในขั้นตอนที่ 3 ด้านล่าง
  2. ถัดไป เนื่องจากโทเค็น Firebase แตกต่างจากโทเค็น Identity Toolkit คุณต้องอัปเดตตรรกะการตรวจสอบโทเค็น ติดตั้ง Firebase Server SDK ลงในเซิร์ฟเวอร์ หรือหากคุณใช้ภาษาที่ Firebase SDK Server ไม่รองรับ ให้ดาวน์โหลดไลบรารีการตรวจสอบโทเค็น JWT สำหรับสภาพแวดล้อมของคุณและตรวจสอบโทเค็นอย่างถูกต้อง

  3. เมื่อทำการอัปเดตข้างต้นเป็นครั้งแรก คุณอาจยังมีเส้นทางโค้ดที่ใช้โทเค็น Identity Toolkit อยู่ หากคุณมีแอปพลิเคชัน iOS หรือ Android ผู้ใช้จะต้องอัปเกรดเป็นเวอร์ชันใหม่เพื่อให้เส้นทางโค้ดใหม่ทำงานได้ ถ้าไม่ต้องการบังคับให้ผู้ใช้อัปเดตแอป คุณสามารถใส่ตรรกะการตรวจสอบเซิร์ฟเวอร์เพิ่มเติมที่จะใช้ตรวจสอบโทเค็นและกำหนดว่าต้องใช้ Firebase SDK หรือ Identity Toolkit SDK เพื่อตรวจสอบโทเค็น หากคุณมีเฉพาะเว็บแอปพลิเคชัน คำขอตรวจสอบสิทธิ์ใหม่ทั้งหมดจะย้ายไปที่ Firebase ดังนั้นคุณจึงต้องใช้วิธีการยืนยันโทเค็น Firebase เท่านั้น

ดูเอกสารอ้างอิง Firebase Web API

ขั้นตอนที่ 2: อัปเดต HTML

  1. เพิ่มโค้ดการเริ่มต้น Firebase ลงในแอปโดยทำดังนี้

    1. เปิดโปรเจ็กต์ในคอนโซล Firebase
    2. ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ลงในเว็บแอป ระบบจะแสดงข้อมูลโค้ดที่เริ่มต้น Firebase
    3. คัดลอกและวางข้อมูลโค้ดการเริ่มต้นลงในหน้าเว็บ
  2. เพิ่ม 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>
    
  3. นำ Identity Toolkit SDK ออกจากแอปของคุณ

  4. หากคุณใช้โทเค็นรหัส Identity Toolkit ในการจัดการเซสชัน คุณต้องทำการเปลี่ยนแปลงต่อไปนี้ในฝั่งไคลเอ็นต์

    1. หลังจากลงชื่อเข้าใช้ด้วย Firebase เรียบร้อยแล้ว ให้รับโทเค็นรหัส Firebase โดยเรียก firebase.auth().currentUser.getToken()

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

      อย่าพึ่งพาคุกกี้เซสชันเพียงอย่างเดียวในการดำเนินการที่มีความละเอียดอ่อนหรือส่งคำขอแก้ไขที่ผ่านการตรวจสอบสิทธิ์ไปยังเซิร์ฟเวอร์ของคุณ คุณจะต้องให้การป้องกันการปลอมแปลงคำขอข้ามเว็บไซต์ (CSRF) เพิ่มเติม

      หากเฟรมเวิร์กของคุณไม่มีการป้องกัน CSRF วิธีหนึ่งในการป้องกันการโจมตีคือการรับโทเค็นรหัส Firebase สำหรับผู้ใช้ที่ลงชื่อเข้าใช้ด้วย getToken() และรวมโทเค็นดังกล่าวไว้กับคำขอแต่ละรายการ (ระบบจะส่งคุกกี้เซสชันโดยค่าเริ่มต้นด้วย) จากนั้นให้ตรวจสอบโทเค็นนั้นโดยใช้ SDK ของเซิร์ฟเวอร์ Firebase เพิ่มเติมจากการตรวจสอบคุกกี้เซสชัน ซึ่งเป็นเฟรมเวิร์กแบ็กเอนด์ที่ทำเสร็จแล้ว ซึ่งจะทำให้การโจมตี CSRF สำเร็จได้ยากขึ้น เนื่องจากโทเค็นรหัส Firebase จะได้รับการจัดเก็บโดยใช้พื้นที่เก็บข้อมูลเว็บเท่านั้นและจะไม่อยู่ในคุกกี้

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

ขั้นตอนที่ 3: อัปเดต URL เปลี่ยนเส้นทางของ IDP

  1. ในคอนโซล Firebase ให้เปิดส่วนการตรวจสอบสิทธิ์แล้วคลิกแท็บวิธีการลงชื่อเข้าใช้

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

    1. คลิกชื่อผู้ให้บริการลงชื่อเข้าใช้
    2. คัดลอก URI การเปลี่ยนเส้นทาง OAuth
    3. อัปเดต URI การเปลี่ยนเส้นทาง OAuth ใน Developer Console ของผู้ให้บริการการลงชื่อเข้าใช้

Android

ขั้นตอนที่ 1: เพิ่ม Firebase ลงในแอป

  1. เปิดคอนโซล Firebase แล้วเลือกโปรเจ็กต์ Identity Toolkit ที่คุณนำเข้าไปแล้ว

  2. ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ลงในแอป Android ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือใบรับรองที่ลงนาม แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า google-services.json ไปยังคอมพิวเตอร์ของคุณ

  3. คัดลอกไฟล์การกำหนดค่าไปยังไดเรกทอรีรูทของโมดูลแอป Android โดยไฟล์การกำหนดค่านี้มีข้อมูลโปรเจ็กต์และไคลเอ็นต์ OAuth ของ Google

  4. ในไฟล์ build.gradle ระดับโปรเจ็กต์ (<var>your-project</var>/build.gradle) ให้ระบุชื่อแพ็กเกจของแอปในส่วน defaultConfig ดังนี้

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. นอกจากนี้ในไฟล์ build.gradle ระดับโปรเจ็กต์ ให้เพิ่มทรัพยากร Dependency เพื่อรวมปลั๊กอิน google-services ดังนี้

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. ในไฟล์ 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

  7. นอกจากนี้ในไฟล์ build.gradle ระดับแอป ให้เพิ่มทรัพยากร Dependency ของการตรวจสอบสิทธิ์ Firebase ดังนี้

    compile 'com.google.firebase:firebase-auth:22.3.1'
    compile 'com.google.android.gms:play-services-auth:21.0.0'
    

ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก

  1. นำการกำหนดค่า Identity Toolkit ออกจากไฟล์ AndroidManifest.xml ข้อมูลนี้จะรวมอยู่ในไฟล์ google-service.json และโหลดโดยปลั๊กอินของ google-services
  2. นำ Identity Toolkit SDK ออกจากแอปของคุณ

ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป

  1. เพิ่ม FirebaseUI Auth ลงในแอป

  2. ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI

iOS

ขั้นตอนที่ 1: เพิ่ม Firebase ลงในแอป

  1. เพิ่ม Firebase SDK ลงในแอปโดยเรียกใช้คำสั่งต่อไปนี้

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. เปิดคอนโซล Firebase แล้วเลือกโปรเจ็กต์ Identity Toolkit ที่คุณนำเข้าไปแล้ว

  3. ในหน้าภาพรวม ให้คลิกเพิ่มแอป แล้วคลิกเพิ่ม Firebase ลงในแอป iOS ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุรหัสชุดของแอปและรหัส App Store แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า GoogleService-Info.plist ไปยังคอมพิวเตอร์ของคุณ หากคุณมีรหัสชุดหลายรหัสในโปรเจ็กต์ รหัสชุดแต่ละรหัสต้องเชื่อมต่อในคอนโซล Firebase รหัสชุดนั้นเพื่อให้มีไฟล์ GoogleService-Info.plist เป็นของตัวเอง

  4. คัดลอกไฟล์การกำหนดค่าไปยังรูทของโปรเจ็กต์ Xcode แล้วเพิ่มลงในเป้าหมายทั้งหมด

ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก

  1. นำ GoogleIdentityToolkit ออกจาก Podfile ของแอป
  2. เรียกใช้คำสั่ง pod install

ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป

  1. เพิ่ม FirebaseUI Auth ลงในแอป

  2. ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI