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

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

ฟีเจอร์ใหม่

การตรวจสอบสิทธิ์ Firebase มีการปรับปรุงฟีเจอร์ที่สำคัญบางอย่างเหนือกว่า Google Identity Toolkit ดังนี้

  • สิทธิ์เข้าถึง Firebase ทั้งหมด

    Firebase เป็นแพลตฟอร์มมือถือที่ช่วยให้คุณสามารถพัฒนาแอปคุณภาพสูง ขยายฐานผู้ใช้ และสร้างรายได้เพิ่มได้อย่างรวดเร็ว Firebase ประกอบด้วย ฟีเจอร์ที่ทำงานร่วมกันได้ซึ่งคุณสามารถนำมาใช้ร่วมกันเพื่อให้เหมาะกับความต้องการของคุณ และ มีโครงสร้างพื้นฐานสำหรับ: ข้อมูลวิเคราะห์บนอุปกรณ์เคลื่อนที่, Cloud Messaging, ฐานข้อมูลเรียลไทม์, พื้นที่เก็บข้อมูลไฟล์, โฮสติ้งแบบคงที่, การกำหนดค่าระยะไกล, การรายงานข้อขัดข้องบนอุปกรณ์เคลื่อนที่ และ การทดสอบAndroid

  • UI ที่อัปเดต

    เราได้สร้างโฟลว์ UI ใหม่ทั้งหมดโดยอิงตามการวิจัย UX ล่าสุดของ Google ซึ่งรวมถึงการกู้คืนรหัสผ่าน การลิงก์บัญชี โฟลว์การแยกความแตกต่างของบัญชีใหม่/ที่มีอยู่ ซึ่งมักใช้เวลาในการเขียนโค้ดและแก้ไขข้อบกพร่องเป็นอย่างมาก นอกจากนี้ยังผสานรวม Smart Lock สำหรับรหัสผ่าน ใน Android ซึ่งช่วยปรับปรุง Conversion การลงชื่อเข้าใช้และการลงชื่อสมัครใช้ สำหรับแอปที่เข้าร่วมได้อย่างมาก อีกทั้งยังรองรับการปรับเปลี่ยนธีมได้ง่ายเพื่อให้เข้ากับแอปพลิเคชันของคุณ และเราได้เปิดซอร์สโค้ดเวอร์ชัน Androidและ iOSเพื่อให้ปรับแต่งได้สูงสุด

  • การตั้งค่าเซิร์ฟเวอร์ที่ง่ายขึ้น

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

ความแตกต่างของฟีเจอร์

ฟีเจอร์บางอย่างของ 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

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

ใน Firebase ฟีเจอร์ที่ Google Identity Toolkit มีให้จะแบ่งออกเป็น 2 คอมโพเนนต์ ดังนี้

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

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

  • FirebaseUI Auth

    เราได้สร้างโฟลว์ UI ทั้งหมดที่จัดการการลงชื่อเข้าใช้ การลงชื่อสมัครใช้ การกู้คืนรหัสผ่าน และการลิงก์บัญชีใหม่โดยใช้ Firebase Authentication SDK โดย 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 ดังนี้

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

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

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

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

  • โฟลว์การลงชื่อเข้าใช้เว็บ

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

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

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

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

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

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

Android

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

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

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

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

  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:24.2.0'
    compile 'com.google.android.gms:play-services-auth:21.6.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