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 เวอร์ชันเสถียรล่าสุด
อุปกรณ์อย่างใดอย่างหนึ่งต่อไปนี้
- อุปกรณ์ Android จริงที่เชื่อมต่อกับคอมพิวเตอร์
- โปรแกรมจำลอง Android (ดูเรียกใช้แอปในโปรแกรมจำลอง Android)
สภาพแวดล้อมการพัฒนา Java หรือตัวแก้ไขโค้ดที่คุณเลือก
2. การตั้งค่าโปรเจ็กต์ Firebase และแอป Android
เมื่อสิ้นสุดโค้ดแล็บ คุณจะส่งข้อความไปยังแอปได้โดยใช้ Firebase Cloud Messaging ก่อนที่จะดำเนินการดังกล่าว คุณจะต้องสร้างโปรเจ็กต์ Firebase นอกจากนี้ Codelab นี้ยังมีแอป Android ที่มีโค้ดตัวอย่างเพื่อผสานรวมกับ FCM ด้วย
การตั้งค่าโปรเจ็กต์ Firebase
- ทําตาม "ขั้นตอนที่ 1: สร้างโปรเจ็กต์ Firebase" เพื่อสร้างโปรเจ็กต์ Firebase ของคุณเองสําหรับ Codelab นี้
การตั้งค่าแอป Android
แอป Android ตัวอย่างที่ระบุไว้ใน Codelab นี้ผสานรวมกับ FCM อยู่แล้ว หลังจากเริ่มต้นแล้ว ระบบจะลงทะเบียนกับเซิร์ฟเวอร์ FCM และติดตามหัวข้อ ในขั้นตอนต่อๆ ไปของโค้ดแล็บนี้ คุณจะส่งข้อความหัวข้อไปยังหัวข้อและแอปจะได้รับข้อความนั้น
- ดาวน์โหลดตัวอย่างการเริ่มต้นใช้งาน Firebase Android อย่างรวดเร็ว
- นำเข้าโปรเจ็กต์ภายใต้ https://github.com/firebase/quickstart-android/tree/master/messaging ไปยัง Android Studio
- ลงทะเบียนแอปในคอนโซล Firebase แอปชื่อ
com.google.firebase.quickstart.fcm
ลงทะเบียนแอปนี้ในโปรเจ็กต์ Firebase โดยทำตามขั้นตอนในส่วน "ขั้นตอนที่ 2: ลงทะเบียนแอปกับ Firebase" - ทำตามส่วนที่ 1 ของ "ขั้นตอนที่ 3: เพิ่มไฟล์กำหนดค่า Firebase" เพื่อดาวน์โหลด
google-services.json
และเพิ่มลงในโปรเจ็กต์ สร้างและเรียกใช้โปรเจ็กต์
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
- ตั้งค่าบัญชีบริการ Firebase เพื่อให้ Firebase Admin SDK อนุญาตการเรียกไปยัง FCM API เปิดการตั้งค่าโปรเจ็กต์ในคอนโซล Firebase แล้วเลือกแท็บบัญชีบริการ คลิกสร้างคีย์ส่วนตัวใหม่เพื่อดาวน์โหลดข้อมูลโค้ดการกำหนดค่า
- ในโปรเจ็กต์ Github ที่ดาวน์โหลด ให้เปลี่ยนชื่อไฟล์ที่ดาวน์โหลดเป็น
service-account.json
แล้วคัดลอกไปยังเส้นทางmessaging/
ของโปรเจ็กต์ - เมธอด
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(); }
- เปลี่ยนเมธอดหลักเพื่อเพิ่มบรรทัดต่อไปนี้
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- ไปที่ไดเรกทอรีการรับส่งข้อความ/ โปรเจ็กต์ในเทอร์มินัล แล้วพิมพ์คำสั่งต่อไปนี้
./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"
- หลังจากส่งข้อความสำเร็จแล้ว คุณควรเห็นการแจ้งเตือนแบบป๊อปอัปบนหน้าจอคล้ายกับรูปภาพด้านล่าง
6. บทสรุป
ยินดีด้วย คุณทำ Codelab ต่อไปนี้เสร็จเรียบร้อยแล้ว
- ตั้งค่าโปรเจ็กต์ Firebase
- ผสานรวม Firebase กับแอป Android
- สร้างข้อมูลเข้าสู่ระบบสำหรับ FCM HTTP v1 API
- ส่งข้อความไปยังแอปผ่าน FCM HTTP v1 API
หากต้องการสำรวจฟีเจอร์ขั้นสูงที่ FCM มีให้ใช้ ข้อมูลอ้างอิงต่อไปนี้จะเป็นประโยชน์