OAuth 2 एक्सेस टोकन के साथ FCM HTTP v1 API का उपयोग करें

1 परिचय

एफसीएम लीगेसी एपीआई की तुलना में, एफसीएम HTTP v1 एपीआई अल्पकालिक एक्सेस टोकन का उपयोग करके अधिक सुरक्षित प्राधिकरण मॉडल प्रदान करता है। एफसीएम वी1 एपीआई के लिए एक्सेस टोकन जेनरेट करने के चरण लीगेसी एपीआई के चरणों से काफी अलग हैं।

यह कोडलैब आपको एफसीएम HTTP v1 एपीआई का उपयोग करके एंड्रॉइड ऐप पर पुश नोटिफिकेशन भेजने में सक्षम करने के लिए क्लाइंट और सर्वर साइड सेटअप की प्रक्रिया से गुजरता है। यह v1 एपीआई के लिए क्रेडेंशियल जनरेशन के प्रमुख चरण पर प्रकाश डालता है।

अधिक जानकारी यहां पाई जा सकती है:

आवश्यक शर्तें

  • जावा और एंड्रॉइड विकास की बुनियादी समझ

आप क्या सीखेंगे

  • FCM HTTP v1 API का उपयोग करके आपके एंड्रॉइड ऐप पर पुश नोटिफिकेशन भेजने में सक्षम करने के लिए क्लाइंट और सर्वर साइड सेटअप के विस्तृत चरण
  • सेवा खातों का उपयोग करके HTTP v1 API के लिए क्रेडेंशियल जनरेशन
  • HTTP v1 API के माध्यम से परीक्षण संदेश भेजना

आपको किस चीज़ की ज़रूरत पड़ेगी

एंड्रॉइड स्टूडियो का नवीनतम स्थिर संस्करण

निम्नलिखित उपकरणों में से एक:

आपकी पसंद का जावा विकास परिवेश या कोड संपादक

2. फायरबेस प्रोजेक्ट और एंड्रॉइड ऐप सेटअप

कोड लैब के अंत में, आप फायरबेस क्लाउड मैसेजिंग का उपयोग करके अपने ऐप पर संदेश भेजने में सक्षम होंगे। ऐसा करने से पहले, आपको एक फायरबेस प्रोजेक्ट बनाना होगा। यह कोडलैब एफसीएम के साथ एकीकृत करने के लिए नमूना कोड वाला एक एंड्रॉइड ऐप भी प्रदान करता है।

फायरबेस प्रोजेक्ट सेटअप

एंड्रॉइड ऐप सेटअप

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

3. ऐप सर्वर सेट करें

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

  • Github प्रोजेक्ट डाउनलोड करके स्टार्टर सर्वर कोड आयात करें। "मैसेजिंग" प्रोजेक्ट एक ग्रैडल-आधारित जावा प्रोजेक्ट है जो फायरबेस-एडमिन एसडीके पर निर्भरता के साथ है, जो संदेश भेजने के लिए कार्यक्षमता प्रदान करता है।

किसी ऐप सर्वर को एफसीएम के साथ कैसे काम करना चाहिए, इसके बारे में अधिक विवरण आपके सर्वर वातावरण और एफसीएम दस्तावेज़ में पाया जा सकता है।

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

FCM HTTP v1 API OAuth2 सुरक्षा मॉडल के अनुसार अल्पकालिक एक्सेस टोकन का उपयोग करता है। एफसीएम लीगेसी एपीआई में उपयोग की जाने वाली स्थिर एपीआई कुंजी की तुलना में, अल्पकालिक एक्सेस टोकन में क्रेडेंशियल लीक का खतरा कम होता है। यह अनुभाग एपीआई को कॉल करने में उपयोग किए जाने वाले एक्सेस टोकन उत्पन्न करने के लिए क्रेडेंशियल बनाने के चरणों का विवरण देता है।

  1. फायरबेस एडमिन एसडीके को एफसीएम एपीआई पर कॉल को अधिकृत करने देने के लिए फायरबेस सेवा खाता सेट करें। फायरबेस कंसोल में प्रोजेक्ट सेटिंग्स खोलें और सेवा खाता टैब चुनें। कॉन्फ़िगरेशन स्निपेट डाउनलोड करने के लिए नई निजी कुंजी जनरेट करें पर क्लिक करें। प्रोजेक्ट सेटिंग पेज के सेवा खाते घटक के एडमिन एसडीके कॉन्फ़िगरेशन स्निपेट को हाइलाइट करने वाला एक क्रॉप किया हुआ स्क्रीनशॉट
  2. डाउनलोड किए गए Github प्रोजेक्ट में, डाउनलोड की गई फ़ाइल का नाम बदलकर service-account.json रखें और इसे प्रोजेक्ट के messaging/ पथ पर कॉपी करें।
  3. Messaging.java क्लास में getAccessToken() विधि (नीचे दिखाया गया है) एक 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: Bearer <access_token> प्रारूप में प्राधिकरण शीर्षलेख के मान के रूप में टोकन जोड़ें
  • कर्ल का उपयोग करके FCM v1 API के लिए HTTP अनुरोध करें:
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 फायरबेस प्रोजेक्ट और एंड्रॉइड ऐप सेटअप में उल्लिखित एंड्रॉइड ऐप कोड में पाया जा सकता है। डिफ़ॉल्ट रूप से यह "weather" है।

  • संदेश सफलतापूर्वक डिलीवर होने के बाद, आपको अपनी स्क्रीन पर नीचे दी गई छवि के समान एक अधिसूचना पॉप अप दिखनी चाहिए:

54ae84ece22202cd.png

6। निष्कर्ष

बधाई हो! आपने कोडलैब को सफलतापूर्वक पूरा कर लिया है:

  • एक फायरबेस प्रोजेक्ट सेट करें
  • एंड्रॉइड ऐप के साथ फायरबेस को एकीकृत करें
  • FCM HTTP v1 API के लिए क्रेडेंशियल बनाएं
  • FCM HTTP v1 API के माध्यम से अपने ऐप पर एक संदेश भेजें

एफसीएम द्वारा प्रदान की जाने वाली उन्नत सुविधाओं का पता लगाने के लिए, निम्नलिखित संदर्भ उपयोगी हैं: