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

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

ฟีเจอร์ใหม่

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

  • เข้าถึง Firebase ทั้งหมด

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

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

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

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

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

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

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

ความแตกต่างเพิ่มเติมมีดังนี้

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

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

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

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

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

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

  • วิดเจ็ตการจัดการบัญชี

    วิดเจ็ตนี้มี 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. นำ SDK ของ Identity Toolkit ออกจากแอป

  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 ระดับแอป ให้เพิ่มการอ้างอิงการตรวจสอบสิทธิ์ Firebase ดังนี้

    compile 'com.google.firebase:firebase-auth:24.2.0'
    compile 'com.google.android.gms:play-services-auth:22.0.0'
    

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

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

ขั้นตอนที่ 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