FCM HTTP v1 API ব্যবহার করে, আপনি মেসেজ অনুরোধ তৈরি করতে এবং এই ধরনের টার্গেটে পাঠাতে পারবেন:
- বিষয়ের নাম
- শর্ত
- ডিভাইস রেজিস্ট্রেশন টোকেন
- ডিভাইস গ্রুপের নাম (বন্ধ হয়ে গেছে, ২৯ সেপ্টেম্বর, ২০২৭-এ সরিয়ে দেওয়া হবে)
আপনি আগে থেকে নির্দিষ্ট করা ফিল্ড দিয়ে তৈরি নোটিফিকেশন পেলোড, আপনার ব্যবহারকারীর দ্বারা নির্দিষ্ট করা ফিল্ডের ডেটা পেলোড অথবা দু'টি পেলোডই আছে এমন মেসেজ পাঠাতে পারবেন। আরও তথ্যের জন্য মেসেজের ধরন দেখুন।
HTTP v1 পাঠানোর অনুরোধ অনুমোদন করা
আপনার সার্ভার এনভায়রনমেন্টের বিবরণের উপর নির্ভর করে, Firebase পরিষেবায় সার্ভার অনুরোধ অনুমোদন করতে এইসব কৌশল একসাথে ব্যবহার করুন:
- Google অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC)
- পরিষেবা অ্যাকাউন্টের JSON ফাইল
- পরিষেবা অ্যাকাউন্ট থেকে প্রাপ্ত স্বল্পমেয়াদী OAuth 2.0 অ্যাক্সেস টোকেন
আপনার অ্যাপ্লিকেশন Compute Engine, Google Kubernetes Engine, App Engine, বা Cloud Functions-এ রান করলে (Cloud Functions for Firebase সহ), অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) ব্যবহার করুন। অনুরোধ অনুমোদন করার জন্য ক্রেডেনশিয়াল পেতে ADC আপনার আগে থেকে থাকা ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে এবং ADC এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_APPLICATION_CREDENTIALS-এর মাধ্যমে ফ্লেক্সিবল লোকাল টেস্টিং চালু করে। অনুমোদন ফ্লোয়ের সম্পূর্ণ অটোমেশনের জন্য, Admin SDK সার্ভার লাইব্রেরির সাথে ADC ব্যবহার করুন।
আপনার অ্যাপ্লিকেশন যদি Google নয় এমন কোনও সার্ভার এনভায়রনমেন্টে চলে, তাহলে আপনাকে Firebase প্রোজেক্ট থেকে একটি পরিষেবা অ্যাকাউন্ট JSON ফাইল ডাউনলোড করতে হবে। যতক্ষণ আপনার কাছে প্রাইভেট কী ফাইল থাকা ফাইল সিস্টেমে অ্যাক্সেস আছে, ততক্ষণ আপনি ম্যানুয়ালি পাওয়া এইসব ক্রেডেনশিয়াল দিয়ে অনুরোধ অনুমোদন করার জন্য এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_APPLICATION_CREDENTIALS ব্যবহার করতে পারবেন। এই ধরনের ফাইল অ্যাক্সেস না থাকলে, আপনার কোডে পরিষেবা অ্যাকাউন্ট ফাইলটি রেফারেন্স করতে হবে— যা আপনার ক্রেডেনশিয়াল প্রকাশ হয়ে যাওয়ার ঝুঁকি থাকার কারণে অত্যন্ত সতর্কতার সাথে করতে হবে।
ADC ব্যবহার করে ক্রেডেনশিয়াল প্রদান করা
Google অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) নিম্নলিখিত ক্রমে আপনার ক্রেডেনশিয়াল চেক করে:
ADC চেক করে দেখে যে এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_APPLICATION_CREDENTIALS সেট করা আছে কিনা। ভেরিয়েবল সেট করা থাকলে, ADC সেই পরিষেবা অ্যাকাউন্ট ফাইল ব্যবহার করে যেটির দিকে ভেরিয়েবল পয়েন্ট করে।
এনভায়রনমেন্ট ভেরিয়েবল সেট করা না থাকলে, ADC ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে যা Compute Engine, Google Kubernetes Engine, App Engine, এবং Cloud Functions সেইসব পরিষেবায় রান করা অ্যাপ্লিকেশনের জন্য প্রদান করে।
ADC উপরের যেকোনও একটি ক্রেডেনশিয়াল ব্যবহার করতে না পারলে, সিস্টেম একটি সমস্যা দেখায়।
নিম্নলিখিত Admin SDK কোডের উদাহরণ এই কৌশলটি ব্যাখ্যা করে। এই উদাহরণে অ্যাপ্লিকেশন ক্রেডেনশিয়াল স্পষ্টভাবে উল্লেখ করা হয়নি। তবে, এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকলে অথবা Compute Engine, Google Kubernetes Engine, App Engine বা Cloud Functions-এ অ্যাপ্লিকেশন রান করা পর্যন্ত ADC ইমপ্লিসিটভাবে ক্রেডেনশিয়াল খুঁজে পেতে পারে।
Node.js
admin.initializeApp({
credential: admin.credential.applicationDefault(),
});
জাভা
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Python
default_app = firebase_admin.initialize_app()
Go
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
});
ম্যানুয়ালি ক্রেডেনশিয়াল প্রদান করা
Firebase প্রোজেক্ট Google পরিষেবা অ্যাকাউন্টকে সাপোর্ট করে, যা আপনি আপনার অ্যাপ সার্ভার বা বিশ্বস্ত এনভায়রনমেন্ট থেকে Firebase সার্ভার API কল করতে ব্যবহার করতে পারেন। আপনি যদি লোকাল কোড ডেভেলপ করেন বা আপনার অ্যাপ্লিকেশন অন-প্রিমিজে ডেপ্লয় করেন, তাহলে সার্ভার অনুরোধ অনুমোদন করার জন্য এই পরিষেবা অ্যাকাউন্ট ব্যবহার করে পাওয়া ক্রেডেনশিয়াল ব্যবহার করতে পারবেন।
আপনি
পরিষেবা অ্যাকাউন্ট যাচাই করতে এবং Firebase পরিষেবা অ্যাক্সেস করার জন্য এটিকে অনুমোদন করতে, আপনাকে অবশ্যই JSON ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে।
আপনার পরিষেবা অ্যাকাউন্টের জন্য প্রাইভেট কী ফাইল তৈরি করতে:
Firebase কনসোলে,
সেটিংস > পরিষেবা অ্যাকাউন্ট ট্যাবে যান।নতুন ব্যক্তিগত কী তৈরি করুন বিকল্পে ক্লিক করুন, তারপর কী তৈরি করুন বিকল্পে ক্লিক করে কনফার্ম করুন।
কী সহ JSON ফাইল নিরাপদে সেভ করুন।
পরিষেবা অ্যাকাউন্টের মাধ্যমে অনুমোদন করার সময়, আপনার অ্যাপ্লিকেশনে ক্রেডেনশিয়াল প্রদান করার জন্য আপনার কাছে দুটি বিকল্প আছে। আপনি GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন অথবা কোডে পরিষেবা অ্যাকাউন্টের কী-এর পাথ স্পষ্টভাবে পাস করতে পারেন। প্রথম বিকল্পটি আরও সুরক্ষিত এবং এটি ব্যবহার করার জন্য অত্যন্ত সাজেস্ট করা হয়।
এনভায়রনমেন্ট ভেরিয়েবল সেট করতে:
আপনার পরিষেবা অ্যাকাউন্ট কী থাকা JSON ফাইলের ফাইল পাথে GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবেল সেট করুন। এই ভেরিয়েবল শুধুমাত্র আপনার বর্তমান শেল সেশনের ক্ষেত্রেই প্রযোজ্য, তাই আপনি নতুন সেশন খুললে, আবার ভেরিয়েবল সেট করুন।
Linux বা macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
জানলা
PowerShell-এর মাধ্যমে:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
উপরের ধাপগুলি সম্পূর্ণ করার পরে, অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) আপনার ক্রেডেনশিয়ালকে পরোক্ষভাবে নির্ধারণ করতে পারে, এর ফলে আপনি Google নয় এমন এনভায়রনমেন্টে পরীক্ষা বা রান করানোর সময় পরিষেবা অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করতে পারবেন।
অ্যাক্সেস টোকেন মিন্ট করতে ক্রেডেনশিয়াল ব্যবহার করা
আপনি যদি Firebase Admin SDK ব্যবহার না করেন, যা অটোমেটিক অনুমোদন ম্যানেজ করে, তাহলে আপনাকে অ্যাক্সেস টোকেন মিন্ট করতে হবে এবং অনুরোধ পাঠানোর জন্য এটি যোগ করতে হবে।
স্বল্পমেয়াদী OAuth 2.0 অ্যাক্সেস টোকেন পেতে, আপনার পছন্দের ভাষার জন্য Google Auth লাইব্রেরি সহ আপনার Firebase ক্রেডেনশিয়াল ব্যবহার করুন:
node.js
function getAccessToken() {
return new Promise(function(resolve, reject) {
const key = require('../placeholders/service-account.json');
const jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
SCOPES,
null
);
jwtClient.authorize(function(err, tokens) {
if (err) {
reject(err);
return;
}
resolve(tokens.access_token);
});
});
}
এই উদাহরণে, Google API ক্লায়েন্ট লাইব্রেরি JSON ওয়েব টোকেন বা JWT দিয়ে অনুরোধ যাচাই করে। আরও তথ্যের জন্য, JSON ওয়েব টোকেন দেখুন।
Python
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = service_account.Credentials.from_service_account_file(
'service-account.json', scopes=SCOPES)
request = google.auth.transport.requests.Request()
credentials.refresh(request)
return credentials.token
জাভা
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();
}
আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে, আপডেট করা অ্যাক্সেস টোকেন পেতে টোকেন রিফ্রেশ করার পদ্ধতি অটোমেটিক কল করা হয়।
FCM-কে অ্যাক্সেস করার অনুমতি দিতে, স্কোপ
https://www.googleapis.com/auth/firebase.messaging-এর অনুরোধ করুন।
HTTP অনুরোধের হেডারে অ্যাক্সেস টোকেন যোগ করতে:
Authorization হেডারের ভ্যালু হিসেবে টোকেনটি যোগ করুন, এই ফর্ম্যাটে
Authorization: Bearer <access_token>:
node.js
headers: {
'Authorization': 'Bearer ' + accessToken
}
Python
headers = {
'Authorization': 'Bearer ' + _get_access_token(),
'Content-Type': 'application/json; UTF-8',
}
জাভা
URL url = new URL(BASE_URL + FCM_SEND_ENDPOINT);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestProperty("Authorization", "Bearer " + getServiceAccountAccessToken());
httpURLConnection.setRequestProperty("Content-Type", "application/json; UTF-8");
return httpURLConnection;
অন্য প্রোজেক্ট থেকে পরিষেবা অ্যাকাউন্টকে অনুমোদন করা
আপনি একটি প্রোজেক্টের জন্য মেসেজ পাঠাতে পারবেন, "টার্গেট প্রোজেক্ট", যখন অন্য একটি প্রোজেক্টের সার্ভিস অ্যাকাউন্ট থেকে জেনারেট করা OAuth 2.0 টোকেন ব্যবহার করছেন , "প্রেরক প্রোজেক্ট"। এর ফলে, আপনি অন্যদের হয়ে মেসেজ পাঠানোর সময় একটি প্রোজেক্টে পরিষেবা অ্যাকাউন্ট ম্যানেজমেন্ট সেন্ট্রালাইজ করতে পারবেন। এটি কীভাবে করবেন তা জানতে, নিচের ধাপগুলি অনুসরণ করুন:
প্রেরকের প্রোজেক্টে, Firebase Cloud Messaging API চালু করা আছে কিনা ভালভাবে দেখে নিন। Firebase কনসোলে এটি চালু আছে কিনা তা চেক করতে
সেটিংস > সাধারণ বিকল্পে যান। তারপর, ক্লাউড মেসেজিং ট্যাবে ক্লিক করুন।প্রেরক প্রোজেক্টে, একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন।
টার্গেট প্রোজেক্টে, পরিষেবা অ্যাকাউন্টের ইমেল আইডিতে Firebase Cloud Messaging API অ্যাডমিন ভূমিকা অ্যাসাইন করুন। আপনি এটি Google Cloud কনসোলের IAM ও অ্যাডমিন > IAM পৃষ্ঠা থেকে করতে পারেন। এই ভূমিকাটি প্রেরক প্রোজেক্টের পরিষেবা অ্যাকাউন্টকে টার্গেট প্রোজেক্টে মেসেজ পাঠানোর অনুমতি দেয়।
প্রেরক প্রোজেক্টের পরিষেবা অ্যাকাউন্টের জন্য OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করুন । আপনি নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে এটি করতে পারবেন:
- পরিষেবা অ্যাকাউন্টের কী JSON ফাইল ডাউনলোড ও ব্যবহার করা।
- আপনার পরিষেবা Google Cloud-এ চললে, ওয়ার্কলোড আইডেন্টিটি ব্যবহার করা।
আপনার পাঠানো অনুরোধের
Authorizationহেডারে প্রাপ্ত অ্যাক্সেস টোকেন ব্যবহার করুন। অনুরোধটি অবশ্যই টার্গেট প্রোজেক্টের HTTP v1 এন্ডপয়েন্টে করতে হবে:POST https://fcm.googleapis.com/v1/TARGET_PROJECT_ID/messages:send
নির্দিষ্ট ডিভাইসে মেসেজ পাঠানো
কোনও একটি নির্দিষ্ট ডিভাইসে পাঠানোর জন্য, ডিভাইসের রেজিস্ট্রেশন টোকেনটি দেখানো পদ্ধতিতে পাস করুন।
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"body":"This is an FCM notification message!",
"title":"FCM Message"
}
}
}
cURL কমান্ড:
curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
"notification":{
"title":"FCM Message",
"body":"This is an FCM Message"
},
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send
সফল হলে, HTTP v1 API রেসপন্স হল একটি JSON অবজেক্ট যাতে মেসেজ আইডি থাকে:
{
"name":"projects/myproject-b5ae1/messages/0:1500415314455276%31bd1c9631bd1c96"
}
FCM HTTP v1 API ব্যবহার করে একটি টেস্ট বিজ্ঞপ্তি মেসেজ পাঠানো
FCM HTTP v1 API ব্যবহার করে কীভাবে টেস্ট বিজ্ঞপ্তি মেসেজ পাঠাতে হয় তা এই বিভাগে বর্ণনা করা হয়েছে।
HTTP অনুরোধ URL
অনুরোধে নিম্নলিখিত URL-এ নির্দিষ্ট টার্গেটে (রেজিস্ট্রেশন টোকেন, বিষয় বা কন্ডিশন) একটি HTTP POST থাকে:
POST https://fcm.googleapis.com/v1/projectId/messages:send
সম্পূর্ণ HTTP অনুরোধের JSON স্যাম্পেল
HTTP POST অনুরোধের মধ্যে কীভাবে বিজ্ঞপ্তি পোস্ট করতে হয় তা সম্পূর্ণ উদাহরণ সহ এখানে দেখানো হল:
{
"message": {
"token": REGISTRATION_TOKEN,
"notification": {
"title": "FCM API test",
"body": "This is the body of the notification.",
"image": "https://firebase.google.com/static/images/products/cloud-messaging/cloud-messaging-hero_1x.png"
}
}
}API এক্সপ্লোরার-এ নমুনাটি ব্যবহার করে দেখতে রান করুন বিকল্পে ক্লিক করুন।