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

1. บทนำ

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

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

ดูข้อมูลเพิ่มเติมได้ที่

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

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

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

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

สิ่งที่ต้องมี

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

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

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

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

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

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

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

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

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

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

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

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