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

1. מבוא

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

ב-codelab הזה מוסבר איך להגדיר את הצד של הלקוח ואת הצד של השרת כדי לשלוח התראות לאפליקציית 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

  • כדי ליצור פרויקט Firebase משלכם בשביל ה-codelab הזה, צריך לפעול לפי ההוראות שבקטע 'שלב 1: יצירת פרויקט Firebase'.

הגדרה של אפליקציה ל-Android

אפליקציית Android לדוגמה שמופיעה ב-codelab הזה כבר משולבת עם FCM. אחרי ההפעלה, הוא יירשם בשרת FCM ויירשם לנושא. בשלבים הבאים של ה-codelab הזה, תשלחו הודעה בנושא לנושא והאפליקציה שלכם תקבל אותה.

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

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

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

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

4. קבלת פרטי כניסה לגרסה 1

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

  1. מגדירים חשבון שירות של Firebase כדי לאפשר ל-Firebase Admin SDK לאשר קריאות לממשקי FCM API. פותחים את הגדרות הפרויקט במסוף Firebase ובוחרים בכרטיסייה חשבונות שירות. לוחצים על יצירת מפתח פרטי חדש כדי להוריד את קטע ההגדרה. צילום מסך חתוך שבו מסומן קטע קוד של הגדרות 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, כדאי לעיין במקורות המידע הבאים: