ย้ายข้อมูลจาก Google Identity Toolkit ไปยัง Identity Platform ของ Google Cloud

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

ฟีเจอร์ใหม่

Identity Platform มีการปรับปรุงฟีเจอร์ที่สำคัญมากกว่า Google Identity Toolkit อยู่แล้ว

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

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

  • วิธีการตรวจสอบสิทธิ์แบบใหม่

    Identity Platform รองรับมาตรฐานการรวมศูนย์ขององค์กร เช่น SAML และ OIDC ซึ่งช่วยให้คุณปรับขนาดแอปและบริการ SaaS ได้ Identity Platform ยังรองรับผู้ให้บริการ เช่น GitHub, Microsoft, Yahoo และอื่นๆ คุณสามารถใช้การลงชื่อเข้าใช้แบบไม่ระบุชื่อเพื่อสร้างรหัสผู้ใช้ที่ไม่ซ้ำโดยไม่ต้องกำหนดให้ผู้ใช้ลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ การทำเช่นนี้จะช่วยให้คุณเรียกใช้ API ที่ตรวจสอบสิทธิ์แล้วได้เช่นเดียวกับที่ทำกับผู้ใช้ทั่วไป เมื่อผู้ใช้ตัดสินใจลงชื่อสมัครใช้บัญชี กิจกรรมทั้งหมดจะยังคงอยู่โดยใช้รหัสผู้ใช้เดียวกัน ซึ่งมีประโยชน์ในสถานการณ์อย่างเช่น รถเข็นช็อปปิ้งฝั่งเซิร์ฟเวอร์หรือแอปพลิเคชันอื่นๆ ที่คุณต้องการดึงดูดผู้ใช้ก่อนที่จะส่งผู้ใช้ผ่านขั้นตอนการลงชื่อสมัครใช้

  • ปรับขนาดได้อย่างมั่นใจด้วยข้อตกลงระดับการให้บริการและการสนับสนุนระบบคลาวด์

    Identity Platform สร้างขึ้นบนโครงสร้างพื้นฐานของ Google ที่เชื่อถือได้ และให้ข้อตกลงระดับการให้บริการและการสนับสนุนจาก Google Cloud ซึ่งหมายความว่าคุณจะปรับขนาดบริการได้อย่างมั่นใจ และอาศัย Google เพื่อมอบความยืดหยุ่น ความพร้อมใช้งาน และความสามารถในการปรับขนาดอย่างที่คุณต้องการ

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

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

  • UI ที่อัปเดตแล้ว

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

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

    เราเห็นว่านักพัฒนาซอฟต์แวร์จำนวนมากเลือกที่จะไม่ใช้ขั้นตอนการกู้คืนบัญชี ทำให้ผู้ใช้ไม่สามารถกู้คืนบัญชีได้หากลืมรหัสผ่าน Identity Platform สามารถ ส่งการยืนยันอีเมล รีเซ็ตรหัสผ่าน และข้อความรหัสผ่านที่เปลี่ยนแปลงไปให้กับผู้ใช้ และสามารถปรับแต่งข้อความสำหรับผู้ใช้ของคุณได้อย่างง่ายดาย นอกจากนี้ คุณไม่จําเป็นต้องโฮสต์วิดเจ็ต UI สําหรับการเปลี่ยนเส้นทางโฮสต์และดำเนินการเปลี่ยนรหัสผ่านให้เสร็จเรียบร้อยอีกต่อไป

  • SDK ใหม่

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

  • การจัดการเซสชันสำหรับแอปบนอุปกรณ์เคลื่อนที่

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

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

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

ความแตกต่างของฝั่งเซิร์ฟเวอร์

บริการหลักของ Identity Toolkit ที่มี REST API ที่เกี่ยวข้อง, ตรรกะการตรวจสอบบัญชี และฐานข้อมูลผู้ใช้หลักได้รับการอัปเดตเพียงเล็กน้อยเท่านั้น แต่ฟีเจอร์บางอย่างและลักษณะการผสานรวม Identity Platform เข้ากับบริการได้มีการเปลี่ยนแปลง

  • ผู้ให้บริการข้อมูลประจำตัว

    ไม่รองรับ PayPal และ AOL ผู้ใช้ที่มีบัญชีจาก IdP เหล่านี้จะยังลงชื่อเข้าใช้แอปพลิเคชันด้วยขั้นตอนการกู้คืนรหัสผ่านและตั้งรหัสผ่านสำหรับบัญชีของตนเองได้

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

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

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

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

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

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

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

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

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

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

ฟีเจอร์ของ Google Identity Toolkit ใน Identity Platform จะแบ่งออกเป็น 2 ส่วน ดังนี้

  • SDK ของไคลเอ็นต์และเซิร์ฟเวอร์

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

  • วิดเจ็ต UI

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

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

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

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

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

ก่อนที่จะย้ายข้อมูลจาก Identity Toolkit ไปยัง Identity Platform ได้ คุณต้องดำเนินการดังนี้

  1. เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit

  2. จาก Marketplace ให้ไปที่ Identity Platform แล้วเลือก "Enable Identity Platform"

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

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

  5. กลับไปที่ Cloud Console ในส่วนผู้ให้บริการ ให้เปิดหน้าเทมเพลตอีเมลภายในวิธีการลงชื่อเข้าใช้ "อีเมล/รหัสผ่าน" จากนั้นคุณจะปรับแต่งเทมเพลตของแอปได้

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

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

    1. คุณติดตั้ง Node.js Admin SDK ด้วย 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

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

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

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

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

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

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

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

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

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

    วิดเจ็ตนี้มี UI เพื่อให้ผู้ใช้เปลี่ยนอีเมล เปลี่ยนรหัสผ่าน หรือยกเลิกการลิงก์บัญชีจากผู้ให้บริการข้อมูลประจำตัว ซึ่งขณะนี้อยู่ระหว่าง การพัฒนา

  • ปุ่ม/วิดเจ็ตลงชื่อเข้าใช้

    ไม่มีวิดเจ็ต เช่น ปุ่มลงชื่อเข้าใช้และการ์ดผู้ใช้ให้บริการอีกต่อไป ซึ่งสร้างได้ง่ายๆ โดยใช้ Firebase Authentication API

  • ไม่มี signOutUrl

    คุณจะต้องโทรหา firebase.auth.signOut() และจัดการการติดต่อกลับ

  • ไม่มี oobActionUrl

    Identity Platform จะเป็นผู้จัดการการส่งอีเมลและได้รับการกำหนดค่าในคอนโซล Firebase

  • การปรับแต่ง CSS

    วิดเจ็ต UI ใช้การจัดรูปแบบ Material Design Lite ซึ่งจะเพิ่มภาพเคลื่อนไหวของดีไซน์ Material แบบไดนามิก

ขั้นตอนที่ 1: เปลี่ยนรหัสเซิร์ฟเวอร์

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

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

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

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

ขั้นตอนที่ 2: อัปเดต HTML ของคุณ

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

    1. เปิดโปรเจ็กต์ใน Cloud Console
    2. ในหน้า providers ให้คลิก Application Setup Details ข้อมูลโค้ดที่เริ่มต้น Identity Platform จะปรากฏ
    3. คัดลอกและวางข้อมูลโค้ดการเริ่มต้นลงในหน้าเว็บ
  2. เพิ่มวิดเจ็ตการตรวจสอบสิทธิ์ ลงในแอป

    <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. หลังจากลงชื่อเข้าใช้ด้วย Identity Platform สำเร็จแล้ว ให้ขอรับโทเค็นรหัสโดยเรียกใช้ firebase.auth().currentUser.getToken()

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

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

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

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

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

  1. ใน Cloud Console ให้เปิดส่วนผู้ให้บริการ

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

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

Android

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

  1. เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit

  2. ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน เลือกแท็บ Android แล้วคลิกเริ่มต้นใช้งาน Firebase ในกล่องโต้ตอบเพิ่ม 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) ให้เพิ่มบรรทัดต่อไปนี้หลังปลั๊กอิน Android Gradle เพื่อเปิดใช้ปลั๊กอิน google-services

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

    ปลั๊กอิน google-services จะใช้ไฟล์ google-services.json เพื่อกำหนดค่าแอปพลิเคชันให้ใช้ Firebase

  7. นอกจากนี้ในไฟล์ 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 ออก

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

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

  1. เพิ่มการตรวจสอบสิทธิ์ FirebaseUI ลงในแอป

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

iOS

ขั้นตอนที่ 1: เพิ่ม Firebase ไปยังแอปของคุณ

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

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit

  3. ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน เลือกแท็บ iOS แล้วคลิกเริ่มต้นใช้งาน Firebase ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือของใบรับรองที่ลงนาม แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า google-services.json ลงในคอมพิวเตอร์ ในกล่องโต้ตอบเพิ่ม 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 ลงในแอป

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