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

1. บทนำ

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

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

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

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

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

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

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

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

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 ที่มีทรัพยากร Dependency ใน SDK ของ firebase-admin ซึ่งมีฟังก์ชันสำหรับส่งข้อความ

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

4. รับข้อมูลเข้าสู่ระบบ v1

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