OAuth 2 ऐक्सेस टोकन के साथ FCM एचटीटीपी v1 एपीआई का इस्तेमाल करना

1. शुरुआती जानकारी

FCM एचटीटीपी v1 API, FCM एचटीटीपी v1 एपीआई, कम समय तक चलने वाले ऐक्सेस टोकन का इस्तेमाल करके ज़्यादा सुरक्षित तरीके से अनुमति देने वाला मॉडल देता है. FCM v1 API के लिए ऐक्सेस टोकन जनरेट करने के तरीके, पुराने एपीआई के चरणों से काफ़ी अलग हैं.

यह कोडलैब आपको क्लाइंट और सर्वर साइड सेटअप की प्रोसेस के बारे में बताता है, ताकि FCM एचटीटीपी v1 एपीआई का इस्तेमाल करके किसी Android ऐप्लिकेशन पर पुश नोटिफ़िकेशन भेजा जा सके. इससे v1 API के लिए क्रेडेंशियल जनरेट करने के अहम चरण को हाइलाइट किया जाता है.

ज़्यादा जानकारी यहां मिल सकती है:

ज़रूरी शर्तें

  • Java और Android डेवलपमेंट की बुनियादी समझ

आपको यह जानकारी मिलेगी

  • क्लाइंट और सर्वर साइड सेटअप के चरणों के बारे में ज़्यादा जानकारी, ताकि FCM एचटीटीपी v1 एपीआई का इस्तेमाल करके अपने Android ऐप्लिकेशन पर पुश नोटिफ़िकेशन भेजे जा सकें
  • सेवा खातों का इस्तेमाल करके, एचटीटीपी v1 API के लिए क्रेडेंशियल जनरेट करना
  • एचटीटीपी v1 एपीआई की मदद से टेस्ट मैसेज भेजना

आपको इन चीज़ों की ज़रूरत होगी

Android Studio का नया और स्टेबल वर्शन

यहां दिए गए डिवाइसों में से कोई एक:

अपनी पसंद का Java डेवलपमेंट एनवायरमेंट या कोड एडिटर

2. Firebase प्रोजेक्ट और Android ऐप्लिकेशन का सेटअप

कोड लैब के आखिर में, आप Firebase क्लाउड से मैसेज का इस्तेमाल करके अपने ऐप्लिकेशन को मैसेज भेज सकेंगे. ऐसा करने से पहले, आपको एक Firebase प्रोजेक्ट बनाना होगा. यह कोडलैब, FCM के साथ इंटिग्रेट करने के लिए, सैंपल कोड वाला एक Android ऐप्लिकेशन भी उपलब्ध कराता है.

Firebase प्रोजेक्ट सेटअप

  • "पहला चरण: Firebase प्रोजेक्ट बनाना" का पालन करें ताकि आप इस कोडलैब के लिए अपना खुद का Firebase प्रोजेक्ट बना सकें.

Android ऐप्लिकेशन का सेटअप

इस कोडलैब में दिया गया Android ऐप्लिकेशन का नमूना, FCM के साथ पहले से इंटिग्रेट किया गया है. शुरू करने के बाद, यह FCM सर्वर के साथ रजिस्टर होगा और किसी विषय की सदस्यता लेगा. इस कोडलैब के बाद के चरणों में, आपको किसी विषय पर एक मैसेज भेजा जाएगा और आपके ऐप्लिकेशन को वह मैसेज मिलेगा.

3. ऐप्लिकेशन सर्वर सेट अप करना

अब आपका ऐप्लिकेशन सेट अप हो गया है, इसलिए आपको FCM v1 API का इस्तेमाल करके अपने ऐप्लिकेशन पर मैसेज भेजने के लिए, सर्वर साइड कोड का सैंपल डाउनलोड करना होगा. यह कोड, ऐक्सेस टोकन जनरेट करने के लिए एपीआई क्रेडेंशियल (अगले सेक्शन में बताया गया है) को लोड करता है. इसके बाद, वह FCM विषय की मैसेज सेवा का इस्तेमाल करके, आपके ऐप्लिकेशन पर मैसेज भेजता है.

  • GitHub प्रोजेक्ट डाउनलोड करके, स्टार्टर सर्वर कोड इंपोर्ट करें. "मैसेज सेवा" प्रोजेक्ट, Gradle पर आधारित Java प्रोजेक्ट है. यह Firebase-एडमिन SDK टूल पर निर्भर करता है. इसमें मैसेज भेजने की सुविधा उपलब्ध है.

किसी ऐप्लिकेशन सर्वर को FCM के साथ काम करने के तरीके के बारे में ज़्यादा जानकारी, आपका सर्वर एनवायरमेंट और FCM दस्तावेज़ में मिल सकती है.

4. v1 क्रेडेंशियल पाएं

FCM एचटीटीपी v1 एपीआई, OAuth2 सुरक्षा मॉडल के मुताबिक कम समय तक चलने वाले ऐक्सेस टोकन का इस्तेमाल करता है. FCM के पुराने एपीआई में इस्तेमाल की गई स्टैटिक एपीआई पासकोड की तुलना में, कम समय तक चलने वाले ऐक्सेस टोकन से क्रेडेंशियल के लीक होने का खतरा कम होता है. इस सेक्शन में, एपीआई को कॉल करने में इस्तेमाल किया जाने वाला ऐक्सेस टोकन जनरेट करने के लिए, क्रेडेंशियल बनाने का तरीका बताया गया है.

  1. Firebase सेवा खाता सेट अप करें, ताकि Firebase एडमिन SDK टूल, FCM API (एपीआई) को कॉल करने की अनुमति दे सके. Firebase कंसोल में प्रोजेक्ट सेटिंग खोलें और सेवा खाते टैब चुनें. कॉन्फ़िगरेशन स्निपेट डाउनलोड करने के लिए, Generate new private key पर क्लिक करें. प्रोजेक्ट की सेटिंग वाले पेज के सेवा खातों वाले कॉम्पोनेंट के एडमिन SDK टूल के कॉन्फ़िगरेशन स्निपेट को हाइलाइट करने वाला, क्रॉप किया गया स्क्रीनशॉट
  2. डाउनलोड किए गए GitHub प्रोजेक्ट में, डाउनलोड की गई फ़ाइल का नाम बदलकर service-account.json करें. इसके बाद, उसे प्रोजेक्ट के messaging/ पाथ में कॉपी करें.
  3. Messaging.java क्लास में getAccessToken() वाला तरीका (नीचे दिखाया गया है), एक 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. REST API की मदद से मैसेज भेजना

अब आप एचटीटीपी v1 एपीआई की मदद से मैसेज भेजने के लिए तैयार हैं. नीचे दिए गए चरणों का पालन करें:

  • ऐक्सेस टोकन को किसी एचटीटीपी अनुरोध के हेडर में जोड़ने के लिए:
  • Authorization: Bearer <access_token> फ़ॉर्मैट में, अनुमति देने वाले हेडर की वैल्यू के तौर पर टोकन जोड़ें
  • कर्ल का इस्तेमाल करके FCM v1 एपीआई को एचटीटीपी अनुरोध भेजें:
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 प्रोजेक्ट और Android ऐप्लिकेशन के सेटअप में बताए गए Android ऐप्लिकेशन के कोड में मिल सकता है. डिफ़ॉल्ट रूप से, यह "weather" पर सेट होता है.

  • मैसेज डिलीवर होने के बाद, आपको अपनी स्क्रीन पर सूचना वाला पॉप-अप दिखेगा. यह जानकारी, इस इमेज की तरह दिखेगी:

54ae84ece22202cd.png

6. नतीजा

बधाई हो! आपने कोडलैब का यह मॉड्यूल पूरा कर लिया है:

  • Firebase प्रोजेक्ट सेट अप करना
  • Firebase को Android ऐप्लिकेशन के साथ इंटिग्रेट करना
  • FCM HTTP v1 API के लिए क्रेडेंशियल बनाना
  • FCM HTTP v1 API का इस्तेमाल करके अपने ऐप्लिकेशन को मैसेज भेजें

FCM ऑफ़र की बेहतर सुविधाओं के बारे में जानने के लिए, नीचे दी गई जानकारी काम की हैं: