ใช้ FCM HTTP v1 API กับโทเค็นการเข้าถึง OAuth 2

1. บทนำ

เมื่อเปรียบเทียบกับ FCM เดิม API แล้ว FCM HTTP v1 API มอบโมเดลการให้สิทธิ์ที่ปลอดภัยกว่าโดยใช้โทเค็นการเข้าถึงที่มีอายุสั้น ขั้นตอนในการสร้างโทเค็นการเข้าถึงสำหรับ FCM v1 API นั้นแตกต่างอย่างมากจากขั้นตอนสำหรับ API เดิม

Codelab นี้จะอธิบายขั้นตอนการตั้งค่าฝั่งไคลเอ็นต์และเซิร์ฟเวอร์เพื่อเปิดใช้การส่งการแจ้งเตือนแบบพุชไปยังแอป Android โดยใช้ FCM HTTP v1 API โดยเน้นขั้นตอนสำคัญของการสร้างข้อมูลประจำตัวสำหรับ v1 API

สามารถดูข้อมูลเพิ่มเติมได้ที่:

ข้อกำหนดเบื้องต้น

  • ความเข้าใจพื้นฐานเกี่ยวกับการพัฒนา Java และ Android

สิ่งที่คุณจะได้เรียนรู้

  • ขั้นตอนโดยละเอียดของการตั้งค่าฝั่งไคลเอ็นต์และเซิร์ฟเวอร์เพื่อเปิดใช้งานการส่งการแจ้งเตือนแบบพุชไปยังแอป Android ของคุณโดยใช้ FCM HTTP v1 API
  • การสร้างข้อมูลรับรองสำหรับ HTTP v1 API โดยใช้บัญชีบริการ
  • ส่งข้อความทดสอบผ่าน HTTP v1 API

สิ่งที่คุณต้องการ

Android Studio เวอร์ชันเสถียรล่าสุด

หนึ่งในอุปกรณ์ต่อไปนี้:

สภาพแวดล้อมการพัฒนา Java หรือโปรแกรมแก้ไขโค้ดที่คุณเลือก

2. โครงการ Firebase และการตั้งค่าแอป Android

เมื่อสิ้นสุด Code Lab คุณจะสามารถส่งข้อความไปยังแอปของคุณโดยใช้ Firebase Cloud Messaging ก่อนที่จะดำเนินการดังกล่าว คุณจะต้องสร้างโปรเจ็กต์ Firebase ก่อน Codelab นี้ยังมีแอป Android ที่มีโค้ดตัวอย่างเพื่อผสานรวมกับ FCM

การตั้งค่าโปรเจ็กต์ Firebase

การตั้งค่าแอพ Android

แอป Android ตัวอย่างที่ให้ไว้ใน Codelab นี้รวมเข้ากับ FCM แล้ว หลังจากเริ่มต้น มันจะลงทะเบียนกับเซิร์ฟเวอร์ FCM และสมัครรับหัวข้อ ในขั้นตอนต่อๆ ไปของ Codelab นี้ คุณจะต้องส่งข้อความหัวข้อไปยังหัวข้อนั้นและแอปของคุณจะได้รับข้อความดังกล่าว

3. ตั้งค่าเซิร์ฟเวอร์แอป

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

  • นำเข้าโค้ดเซิร์ฟเวอร์เริ่มต้นโดยการดาวน์โหลด โปรเจ็กต์ Github โปรเจ็กต์ "การส่งข้อความ" เป็นโปรเจ็กต์ Java ที่ใช้ Gradle ซึ่งขึ้นอยู่กับ firebase-admin SDK ซึ่งมีฟังก์ชันในการส่งข้อความ

รายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่เซิร์ฟเวอร์แอปควรทำงานร่วมกับ FCM มีอยู่ในเอกสาร สภาพแวดล้อมเซิร์ฟเวอร์ของคุณและ FCM

4. รับข้อมูลรับรอง v1

FCM HTTP v1 API ใช้โทเค็นการเข้าถึงที่มีอายุสั้นตามโมเดลความปลอดภัย OAuth2 เมื่อเปรียบเทียบกับคีย์ API แบบคงที่ที่ใช้ใน FCM API เดิม โทเค็นการเข้าถึงที่มีอายุสั้นมีความเสี่ยงน้อยกว่าต่อการรั่วไหลของข้อมูลรับรอง ส่วนนี้ให้รายละเอียดเกี่ยวกับขั้นตอนในการสร้างข้อมูลประจำตัวสำหรับการสร้างโทเค็นการเข้าถึงที่ใช้ในการเรียก API

  1. ตั้งค่าบัญชีบริการ Firebase เพื่อให้ Firebase Admin SDK ให้สิทธิ์การเรียกไปยัง FCM API เปิด การตั้งค่าโครงการ ในคอนโซล Firebase และเลือกแท็บ บัญชีบริการ คลิก สร้างคีย์ส่วนตัวใหม่ เพื่อดาวน์โหลดข้อมูลโค้ดการกำหนดค่า ภาพหน้าจอครอบตัดที่เน้นส่วนย่อยการกำหนดค่า Admin SDK ของส่วนประกอบบัญชีบริการของหน้าการตั้งค่าโครงการ
  2. ในโปรเจ็กต์ Github ที่ดาวน์โหลด ให้เปลี่ยนชื่อไฟล์ที่ดาวน์โหลดเป็น service-account.json และคัดลอกไปยัง messaging/ พาธของโปรเจ็กต์
  3. เมธอด getAccessToken() (แสดงด้านล่าง) ในคลาส Messaging.java จะสร้างโทเค็น OAuth2 ที่มีอายุ 1 ชั่วโมง
private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES));
  googleCredentials.refresh();
  return googleCredentials.getAccessToken().getTokenValue();
}
  1. เปลี่ยนวิธีการหลักเพื่อเพิ่มบรรทัดต่อไปนี้:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. ไปที่ไดเร็กทอรีการส่งข้อความ/โครงการในเทอร์มินัลของคุณ และพิมพ์:
./gradlew run -Pmessage=common-message

เพื่อพิมพ์โทเค็น OAuth2

สามารถดูข้อมูล เพิ่มเติม ได้ใน อนุญาตการส่งคำขอ

5. ส่งข้อความด้วย REST API

ตอนนี้คุณพร้อมที่จะส่งข้อความผ่าน HTTP v1 API แล้ว ทำตามขั้นตอนด้านล่าง:

  • หากต้องการเพิ่มโทเค็นการเข้าถึงให้กับส่วนหัวคำขอ HTTP:
  • เพิ่มโทเค็นเป็นค่าของส่วนหัวการอนุญาตในรูปแบบ Authorization: Bearer <access_token>
  • ส่งคำขอ HTTP ไปยัง FCM v1 API โดยใช้ curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d  "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send

คุณสามารถดู $topic_name ด้านบนได้ใน โค้ด แอป Android ที่กล่าวถึงในโครงการ Firebase และการตั้งค่าแอป Android โดยค่าเริ่มต้นจะเป็น "weather"

  • หลังจากส่งข้อความเรียบร้อยแล้ว คุณจะเห็นป๊อปอัปการแจ้งเตือนบนหน้าจอ คล้ายกับภาพด้านล่าง:

54ae84ece22202cd.png

6. บทสรุป

ยินดีด้วย! คุณทำ Codelab สำเร็จแล้วเพื่อ:

  • ตั้งค่าโปรเจ็กต์ Firebase
  • ผสานรวม Firebase เข้ากับแอป Android
  • สร้างข้อมูลรับรองสำหรับ FCM HTTP v1 API
  • ส่งข้อความถึงแอปของคุณผ่าน FCM HTTP v1 API

หากต้องการสำรวจข้อเสนอคุณสมบัติขั้นสูงของ FCM ข้อมูลอ้างอิงต่อไปนี้จะมีประโยชน์: