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

1. معرفی

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

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

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

پیش نیازها

  • درک اولیه جاوا و توسعه اندروید

چیزی که یاد خواهید گرفت

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

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

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

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

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

2. پروژه Firebase و راه اندازی برنامه اندروید

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

راه اندازی پروژه Firebase

راه اندازی برنامه اندروید

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

3. سرور برنامه را راه اندازی کنید

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

  • کد سرور شروع را با دانلود پروژه Github وارد کنید. پروژه «پیام‌رسانی» یک پروژه جاوا مبتنی بر Gradle است که به Firebase-admin SDK وابسته است، که قابلیت ارسال پیام‌ها را فراهم می‌کند.

جزئیات بیشتر در مورد اینکه چگونه یک سرور برنامه باید با FCM کار کند را می توان در سند محیط سرور شما و FCM یافت.

4. اعتبار v1 را دریافت کنید

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

  1. یک حساب سرویس Firebase راه‌اندازی کنید تا به Firebase Admin SDK اجازه تماس با APIهای FCM را بدهد. Project Settings را در کنسول Firebase باز کنید و برگه Service accounts را انتخاب کنید. برای دانلود قطعه پیکربندی روی Generate new private key کلیک کنید. یک اسکرین شات برش خورده که قسمت پیکربندی Admin SDK از مؤلفه حساب‌های سرویس در صفحه تنظیمات پروژه را برجسته می‌کند.
  2. در پروژه Github دانلود شده، نام فایل دانلود شده را به service-account.json تغییر دهید و آن را در مسیر messaging/ پروژه کپی کنید.
  3. متد 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();
}
  1. متد اصلی را به خط زیر اضافه کنید:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. به دایرکتوری پیام/پروژه در ترمینال خود بروید و تایپ کنید:
./gradlew run -Pmessage=common-message

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

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

5. یک پیام با REST API ارسال کنید

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

  • برای افزودن نشانه دسترسی به سربرگ درخواست HTTP:
  • توکن را به عنوان مقدار هدر Authorization در قالب Authorization: Bearer <access_token> اضافه کنید
  • یک درخواست HTTP به API FCM v1 با استفاده از 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. نتیجه گیری

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

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

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