از FCM HTTP v1 API با توکن های دسترسی OAuth 2 استفاده کنید

۱. مقدمه

در مقایسه با API قدیمی FCM، API نسخه ۱ FCM HTTP با استفاده از توکن‌های دسترسی کوتاه‌مدت، مدل مجوزدهی امن‌تری ارائه می‌دهد. مراحل تولید توکن دسترسی برای API نسخه ۱ FCM به طور قابل توجهی با مراحل API قدیمی متفاوت است.

این آزمایشگاه کد، شما را در فرآیند راه‌اندازی سمت کلاینت و سرور برای فعال‌سازی ارسال اعلان‌های فوری به یک برنامه اندروید با استفاده از FCM HTTP v1 API راهنمایی می‌کند. این بخش، مرحله کلیدی تولید اعتبارنامه برای v1 API را برجسته می‌کند.

اطلاعات بیشتر را می‌توانید در آدرس زیر بیابید:

پیش‌نیازها

  • آشنایی اولیه با جاوا و توسعه اندروید

آنچه یاد خواهید گرفت

  • مراحل دقیق راه‌اندازی سمت کلاینت و سرور برای فعال کردن ارسال اعلان‌های فوری به برنامه اندروید شما با استفاده از FCM HTTP v1 API
  • تولید اعتبارنامه برای HTTP v1 API با استفاده از حساب‌های سرویس
  • ارسال پیام‌های آزمایشی از طریق HTTP v1 API

آنچه نیاز دارید

آخرین نسخه پایدار اندروید استودیو

یکی از دستگاه‌های زیر:

یک محیط توسعه جاوا یا ویرایشگر کد دلخواه شما

۲. پروژه فایربیس و راه‌اندازی برنامه اندروید

در پایان آزمایشگاه کد، شما قادر خواهید بود با استفاده از Firebase Cloud Messaging به برنامه خود پیام ارسال کنید. قبل از انجام این کار، باید یک پروژه Firebase ایجاد کنید. این آزمایشگاه کد همچنین یک برنامه اندروید حاوی کد نمونه برای ادغام با FCM ارائه می‌دهد.

تنظیمات پروژه فایربیس

تنظیمات برنامه اندروید

برنامه اندروید نمونه ارائه شده در این آزمایشگاه کد، از قبل با FCM یکپارچه شده است. پس از شروع، در سرور FCM ثبت نام کرده و در یک تاپیک مشترک می‌شود. در مراحل بعدی این آزمایشگاه کد، یک پیام تاپیک به تاپیک ارسال می‌کنید و برنامه شما آن را دریافت خواهد کرد.

۳. سرور برنامه را تنظیم کنید

اکنون که برنامه شما راه‌اندازی شده است، باید یک نمونه کد سمت سرور برای ارسال پیام به برنامه خود با استفاده از API نسخه ۱ FCM دانلود کنید. این کد، اعتبارنامه‌های API (که در بخش بعدی توضیح داده شده است) را برای تولید یک توکن دسترسی بارگذاری می‌کند. سپس با استفاده از پیام‌رسانی موضوعی FCM، پیامی را به برنامه شما ارسال می‌کند.

  • کد سرور اولیه را با دانلود پروژه گیت‌هاب وارد کنید. پروژه "messaging" یک پروژه جاوا مبتنی بر Gradle با وابستگی به Firebase-admin SDK است که قابلیت ارسال پیام را فراهم می‌کند.

جزئیات بیشتر در مورد نحوه‌ی کار یک سرور اپلیکیشن با FCM را می‌توانید در سند «محیط سرور شما و FCM» بیابید.

۴. اعتبارنامه‌های نسخه ۱ را دریافت کنید

رابط برنامه‌نویسی کاربردی FCM HTTP نسخه ۱ از توکن‌های دسترسی کوتاه‌مدت مطابق با مدل امنیتی OAuth2 استفاده می‌کند. در مقایسه با کلید API استاتیک مورد استفاده در API قدیمی FCM، توکن دسترسی کوتاه‌مدت کمتر در معرض خطر نشت اعتبارنامه قرار دارد. این بخش مراحل ایجاد یک اعتبارنامه برای تولید توکن دسترسی مورد استفاده در فراخوانی API را شرح می‌دهد.

  1. یک حساب کاربری سرویس Firebase تنظیم کنید تا به Firebase Admin SDK اجازه دهید فراخوانی‌های APIهای FCM را مجاز کند. تنظیمات پروژه را در کنسول Firebase باز کنید و تب Service accounts را انتخاب کنید. برای دانلود قطعه پیکربندی، روی Generate new private key کلیک کنید. یک اسکرین‌شات برش‌خورده که قطعه کد پیکربندی SDK ادمین مربوط به کامپوننت حساب‌های سرویس در صفحه تنظیمات پروژه را برجسته می‌کند.
  2. در پروژه گیت‌هاب دانلود شده، نام فایل دانلود شده را به 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. در ترمینال خود به دایرکتوری messaging/project بروید و دستور زیر را تایپ کنید:
./gradlew run -Pmessage=common-message

برای چاپ توکن OAuth2.

اطلاعات بیشتر را می‌توانید در «مجاز کردن درخواست‌های ارسال» بیابید .

۵. ارسال پیام با REST API

اکنون آماده ارسال پیام از طریق HTTP v1 API هستید. مراحل زیر را دنبال کنید:

  • برای افزودن توکن دسترسی به هدر درخواست HTTP:
  • توکن را به عنوان مقدار هدر Authorization با فرمت Authorization: Bearer <access_token> اضافه کنید.
  • با استفاده از curl یک درخواست HTTP به API نسخه ۱ FCM ارسال کنید:
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 بالا را می‌توانید در کد برنامه اندروید ذکر شده در پروژه Firebase و تنظیمات برنامه اندروید پیدا کنید. به طور پیش‌فرض، مقدار آن "weather" است.

  • پس از ارسال موفقیت‌آمیز پیام، باید اعلانی مشابه تصویر زیر روی صفحه نمایش شما ظاهر شود:

54ae84ece22202cd.png

۶. نتیجه‌گیری

تبریک! شما با موفقیت آزمایشگاه کد را برای موارد زیر تکمیل کردید:

  • راه‌اندازی یک پروژه فایربیس
  • ادغام فایربیس با یک برنامه اندروید
  • ایجاد اعتبارنامه برای FCM HTTP v1 API
  • ارسال پیام به برنامه شما از طریق FCM HTTP v1 API

برای بررسی ویژگی‌های پیشرفته‌ای که FCM ارائه می‌دهد، منابع زیر مفید هستند: