שימוש ב-FCM HTTP v1 API עם אסימוני גישה מסוג OAuth 2

1. מבוא

בהשוואה ל-FCM API הקודם, ה-FCM HTTP v1 API מספק מודל הרשאה מאובטח יותר באמצעות אסימוני גישה לטווח קצר. השלבים ליצירת אסימון הגישה ל-FCM v1 API שונים באופן משמעותי מהשלבים ליצירת אסימון הגישה ל-API הקודם.

בקודלאב הזה נסביר על תהליך ההגדרה בצד הלקוח ובצד השרת כדי לאפשר שליחת התראות לדחוף לאפליקציה ל-Android באמצעות FCM HTTP v1 API. הוא מדגיש את השלב העיקרי ביצירת פרטי הכניסה ל-API בגרסה 1.

מידע נוסף זמין בכתובת:

דרישות מוקדמות

  • הבנה בסיסית של פיתוח Java ו-Android

מה תלמדו

  • שלבים מפורטים להגדרה בצד הלקוח ובצד השרת כדי לאפשר שליחת התראות באפליקציה ל-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 ויירשם לנושא. בשלבים הבאים של ה-Codelab הזה תשלחו הודעה בנושא לנושא והאפליקציה שלכם תקבל אותה.

3. הגדרת שרת האפליקציות

עכשיו, אחרי שהגדרתם את האפליקציה, תצטרכו להוריד דוגמת קוד בצד השרת לשליחת הודעות לאפליקציה באמצעות FCM v1 API. הקוד הזה טוען את פרטי הכניסה ל-API (מתוארים בקטע הבא) כדי ליצור אסימון גישה. לאחר מכן נשלחת הודעה לאפליקציה באמצעות העברת הודעות לנושא ב-FCM.

  • כדי לייבא את קוד השרת לתחילת העבודה, מורידים את הפרויקט ב-GitHub. התכונה 'העברת הודעות' פרויקט הוא פרויקט Java מבוסס-Gradle שפועל לפי ה-SDK של firebase-admin, שמאפשר לשלוח הודעות.

ניתן למצוא פרטים נוספים על האופן שבו שרת אפליקציות צריך לעבוד עם FCM במסמך סביבת השרת שלך ו-FCM.

4. אחזור פרטי הכניסה של v1

FCM HTTP v1 API משתמש באסימוני גישה לטווח קצר בהתאם למודל האבטחה של OAuth2. בהשוואה למפתח ה-API הסטטי שמשמש ב-FCM API הקודם, אסימון הגישה לטווח קצר פחות חשוף לסיכון של דליפת פרטי כניסה. בקטע הזה מפורטים השלבים ליצירת פרטי כניסה ליצירת אסימון הגישה שמשמש בקריאה ל-API.

  1. מגדירים חשבון שירות ב-Firebase כדי לאפשר ל-Firebase Admin SDK לאשר קריאות לממשקי FCM API. פותחים את Project Settings (הגדרות הפרויקט) במסוף Firebase ובוחרים בכרטיסייה Service accounts (חשבונות שירות). לוחצים על יצירת מפתח פרטי חדש כדי להוריד את קטע הקוד של ההגדרה. צילום מסך חתוך שבו מודגש קטע הקוד של הגדרת ה-Admin SDK של הרכיב של חשבונות השירות בדף הגדרות הפרויקט
  2. בפרויקט שהורדתם ב-GitHub, צריך לשנות את השם של הקובץ שהורד ל-service-account.json ולהעתיק אותו לנתיב messaging/ של הפרויקט.
  3. השיטה getAccessToken() (שמוצגת בהמשך) בכיתה Messaging.java יוצרת אסימון OAuth2 שתקף למשך שעה אחת.
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. שליחת הודעה באמצעות API ל-REST

עכשיו אתם מוכנים לשלוח הודעה דרך 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, כדאי לעיין במקורות המידע הבאים: