Sử dụng API FCM HTTP v1 với mã thông báo truy cập OAuth 2

1. Giới thiệu

So với API kế thừa FCM, API FCM HTTP v1 cung cấp mô hình ủy quyền an toàn hơn bằng cách sử dụng mã thông báo truy cập có thời gian sử dụng ngắn. Các bước tạo mã thông báo truy cập cho API FCM v1 khác biệt đáng kể so với các bước dành cho API cũ.

Lớp học lập trình này sẽ hướng dẫn bạn quy trình thiết lập phía máy khách và máy chủ để cho phép gửi thông báo đẩy tới ứng dụng Android bằng API FCM HTTP v1. Nó nêu bật bước quan trọng trong việc tạo thông tin xác thực cho API v1.

Thông tin thêm có thể được tìm thấy tại:

Điều kiện tiên quyết

  • Hiểu biết cơ bản về phát triển Java và Android

Bạn sẽ học được gì

  • Các bước chi tiết về thiết lập phía máy khách và máy chủ để cho phép gửi thông báo đẩy tới ứng dụng Android của bạn bằng API FCM HTTP v1
  • Tạo thông tin xác thực cho API HTTP v1 bằng tài khoản dịch vụ
  • Gửi tin nhắn thử nghiệm thông qua API HTTP v1

Những gì bạn cần

Phiên bản ổn định mới nhất của Android Studio

Một trong các thiết bị sau:

Môi trường phát triển Java hoặc trình soạn thảo mã mà bạn chọn

2. Thiết lập dự án Firebase và ứng dụng Android

Khi kết thúc lớp học lập trình, bạn sẽ có thể gửi tin nhắn đến ứng dụng của mình bằng Nhắn tin qua đám mây Firebase. Trước khi làm điều đó, bạn cần tạo một dự án Firebase. Lớp học lập trình này cũng cung cấp một ứng dụng Android chứa mã mẫu để tích hợp với FCM.

Thiết lập dự án Firebase

  • Làm theo "Bước 1: Tạo dự án Firebase " để tạo dự án Firebase của riêng bạn cho lớp học lập trình này.

Thiết lập ứng dụng Android

Ứng dụng Android mẫu được cung cấp trong lớp học lập trình này đã được tích hợp với FCM. Sau khi bắt đầu, nó sẽ đăng ký với máy chủ FCM và đăng ký một chủ đề. Trong các bước sau của lớp học lập trình này, bạn sẽ gửi thông báo chủ đề đến chủ đề đó và ứng dụng của bạn sẽ nhận được thông báo đó.

3. Thiết lập máy chủ ứng dụng

Bây giờ, ứng dụng của bạn đã được thiết lập, bạn sẽ cần tải xuống mẫu mã phía máy chủ để gửi tin nhắn đến ứng dụng của mình bằng API FCM v1. Mã này tải thông tin xác thực API (được mô tả trong phần tiếp theo) để tạo mã thông báo truy cập. Sau đó, nó sẽ gửi tin nhắn đến ứng dụng của bạn bằng cách sử dụng tin nhắn theo chủ đề FCM.

  • Nhập mã máy chủ khởi động bằng cách tải xuống dự án Github . Dự án "nhắn tin" là một dự án Java dựa trên Gradle phụ thuộc vào SDK quản trị firebase , cung cấp chức năng gửi tin nhắn.

Bạn có thể tìm thêm thông tin chi tiết về cách máy chủ ứng dụng hoạt động với FCM trong tài liệu Môi trường máy chủ của bạn và FCM .

4. Nhận thông tin xác thực v1

API FCM HTTP v1 sử dụng mã thông báo truy cập có thời gian sử dụng ngắn hạn theo mô hình bảo mật OAuth2. So với khóa API tĩnh được sử dụng trong API kế thừa FCM, mã thông báo truy cập tồn tại trong thời gian ngắn ít có nguy cơ rò rỉ thông tin xác thực hơn. Phần này trình bày chi tiết các bước tạo thông tin xác thực để tạo mã thông báo truy cập được sử dụng khi gọi API.

  1. Thiết lập tài khoản dịch vụ Firebase để cho phép SDK quản trị Firebase ủy quyền lệnh gọi tới API FCM. Mở Cài đặt dự án trong bảng điều khiển Firebase và chọn tab Tài khoản dịch vụ . Nhấp vào Tạo khóa riêng mới để tải xuống đoạn cấu hình. Ảnh chụp màn hình bị cắt làm nổi bật đoạn cấu hình SDK quản trị của thành phần Tài khoản dịch vụ trên trang Cài đặt dự án
  2. Trong dự án Github đã tải xuống, đổi tên tệp đã tải xuống thành service-account.json và sao chép nó vào đường dẫn messaging/ của dự án.
  3. Phương thức getAccessToken() (hiển thị bên dưới) trong lớp Messaging.java tạo mã thông báo OAuth2 có hiệu lực trong 1 giờ.
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. Thay đổi phương thức chính để thêm dòng sau:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Chuyển đến thư mục tin nhắn/dự án trong thiết bị đầu cuối của bạn và gõ:
./gradlew run -Pmessage=common-message

để in mã thông báo OAuth2.

Bạn có thể tìm thêm thông tin trong Ủy quyền gửi yêu cầu .

5. Gửi tin nhắn bằng API REST

Bây giờ bạn đã sẵn sàng gửi tin nhắn qua API HTTP v1. Làm theo các bước dưới đây:

  • Để thêm mã thông báo truy cập vào tiêu đề yêu cầu HTTP:
  • Thêm mã thông báo làm giá trị của tiêu đề Ủy quyền ở định dạng Authorization: Bearer <access_token>
  • Thực hiện yêu cầu HTTP tới API FCM v1 bằng cách sử dụng cuộn tròn:
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

Bạn có thể tìm thấy $topic_name ở trên trong ứng dụng Android được đề cập trong dự án Firebase và thiết lập ứng dụng Android. Theo mặc định nó là "weather" .

  • Sau khi tin nhắn được gửi thành công, bạn sẽ thấy một thông báo bật lên trên màn hình, tương tự như hình ảnh bên dưới:

54ae84ece22202cd.png

6. Kết luận

Chúc mừng! Bạn đã hoàn tất thành công lớp học lập trình để:

  • Thiết lập dự án Firebase
  • Tích hợp Firebase với ứng dụng Android
  • Tạo thông tin xác thực cho API FCM HTTP v1
  • Gửi tin nhắn đến ứng dụng của bạn thông qua API FCM HTTP v1

Để khám phá các tính năng nâng cao mà FCM cung cấp, các tài liệu tham khảo sau rất hữu ích: