FCM HTTP v1 API ব্যবহার করে একটি বার্তা পাঠান

FCM HTTP v1 API ব্যবহার করে, আপনি বার্তা অনুরোধ তৈরি করতে পারেন এবং এই ধরণের লক্ষ্যবস্তুতে পাঠাতে পারেন:

  • বিষয়ের নাম
  • অবস্থা
  • ডিভাইস নিবন্ধন টোকেন
  • ডিভাইস গ্রুপের নাম (শুধুমাত্র প্রোটোকল)

আপনি পূর্বনির্ধারিত ক্ষেত্রগুলির সমন্বয়ে তৈরি একটি বিজ্ঞপ্তি পেলোড, আপনার নিজস্ব ব্যবহারকারী-সংজ্ঞায়িত ক্ষেত্রগুলির একটি ডেটা পেলোড, অথবা উভয় ধরণের পেলোড ধারণকারী একটি বার্তা সহ বার্তা পাঠাতে পারেন। আরও তথ্যের জন্য বার্তার ধরণগুলি দেখুন।

HTTP v1 পাঠানোর অনুরোধ অনুমোদন করুন

আপনার সার্ভার পরিবেশের বিশদের উপর নির্ভর করে, Firebase পরিষেবাগুলিতে সার্ভার অনুরোধগুলি অনুমোদন করতে এই কৌশলগুলির সংমিশ্রণ ব্যবহার করুন:

  • গুগল অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র (ADC)
  • একটি পরিষেবা অ্যাকাউন্ট JSON ফাইল
  • একটি পরিষেবা অ্যাকাউন্ট থেকে প্রাপ্ত একটি স্বল্পস্থায়ী OAuth 2.0 অ্যাক্সেস টোকেন

যদি আপনার অ্যাপ্লিকেশনটি Compute Engine , Google Kubernetes Engine , App Engine , অথবা Cloud Functions ( Cloud Functions for Firebase সহ) এ চলমান থাকে, তাহলে Application Default Credentials (ADC) ব্যবহার করুন। ADC অনুরোধ অনুমোদনের জন্য শংসাপত্র পেতে আপনার বিদ্যমান ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে এবং ADC পরিবেশ পরিবর্তনশীল GOOGLE_APPLICATION_CREDENTIALS মাধ্যমে নমনীয় স্থানীয় পরীক্ষা সক্ষম করে। অনুমোদন প্রবাহের সম্পূর্ণ স্বয়ংক্রিয়করণের জন্য, Admin SDK সার্ভার লাইব্রেরির সাথে ADC ব্যবহার করুন।

যদি আপনার অ্যাপ্লিকেশনটি Google-এর বাইরের কোনও সার্ভার পরিবেশে চলছে , তাহলে আপনার Firebase প্রকল্প থেকে একটি পরিষেবা অ্যাকাউন্ট JSON ফাইল ডাউনলোড করতে হবে। যতক্ষণ পর্যন্ত আপনার কাছে ব্যক্তিগত কী ফাইল ধারণকারী একটি ফাইল সিস্টেমে অ্যাক্সেস থাকে, ততক্ষণ আপনি এই ম্যানুয়ালি প্রাপ্ত শংসাপত্রগুলির সাহায্যে অনুরোধগুলি অনুমোদন করতে পরিবেশগত পরিবর্তনশীল GOOGLE_APPLICATION_CREDENTIALS ব্যবহার করতে পারেন। যদি আপনার কাছে এই ধরণের ফাইল অ্যাক্সেস না থাকে, তাহলে আপনার কোডে পরিষেবা অ্যাকাউন্ট ফাইলটি উল্লেখ করতে হবে— যা অত্যন্ত সতর্কতার সাথে করা উচিত কারণ আপনার শংসাপত্রগুলি প্রকাশ পাওয়ার ঝুঁকি রয়েছে।

ADC ব্যবহার করে শংসাপত্র প্রদান করুন

গুগল অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়ালস (ADC) নিম্নলিখিত ক্রমে আপনার ক্রেডেনশিয়াল পরীক্ষা করে:

  1. ADC পরীক্ষা করে যে পরিবেশগত পরিবর্তনশীল GOOGLE_APPLICATION_CREDENTIALS সেট করা আছে কিনা। যদি পরিবর্তনশীল সেট করা থাকে, তাহলে ADC সেই পরিষেবা অ্যাকাউন্ট ফাইলটি ব্যবহার করে যা পরিবর্তনশীল নির্দেশ করে।

  2. যদি পরিবেশ পরিবর্তনশীল সেট না করা থাকে, তাহলে ADC ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে যা Compute Engine , Google Kubernetes Engine , App Engine এবং Cloud Functions এই পরিষেবাগুলিতে চালিত অ্যাপ্লিকেশনগুলির জন্য প্রদান করে।

  3. যদি ADC উপরের শংসাপত্রগুলির কোনওটি ব্যবহার করতে না পারে, তাহলে সিস্টেমটি একটি ত্রুটি নিক্ষেপ করে।

নিম্নলিখিত অ্যাডমিন SDK কোড উদাহরণটি এই কৌশলটি তুলে ধরে। উদাহরণটি স্পষ্টভাবে অ্যাপ্লিকেশন শংসাপত্রগুলি নির্দিষ্ট করে না। তবে, যতক্ষণ পরিবেশ পরিবর্তনশীল সেট করা থাকে, অথবা যতক্ষণ অ্যাপ্লিকেশনটি Compute Engine , Google Kubernetes Engine , App Engine , অথবা Cloud Functions-এ চলমান থাকে, ততক্ষণ ADC পরোক্ষভাবে শংসাপত্রগুলি খুঁজে পেতে সক্ষম।

নোড.জেএস

admin.initializeApp({
  credential: admin.credential.applicationDefault(),
});

জাভা

FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);

পাইথন

default_app = firebase_admin.initialize_app()

যাও

app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
}

সি#

FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.GetApplicationDefault(),
});

ম্যানুয়ালি শংসাপত্র প্রদান করুন

ফায়ারবেস প্রকল্পগুলি গুগল পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে ফায়ারবেস সার্ভার API কল করতে ব্যবহার করতে পারেন। আপনি যদি স্থানীয়ভাবে কোড তৈরি করেন বা আপনার অ্যাপ্লিকেশনটি অন-প্রেমিসে স্থাপন করেন, তাহলে আপনি সার্ভার অনুরোধগুলি অনুমোদনের জন্য এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন।

একটি পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ করতে এবং Firebase পরিষেবাগুলিতে অ্যাক্সেস করার জন্য এটিকে অনুমোদন করতে, আপনাকে অবশ্যই JSON ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে।

আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল তৈরি করতে:

  1. Firebase কনসোলে, Settings > Service Accounts খুলুন।

  2. নতুন প্রাইভেট কী তৈরি করুন ক্লিক করুন, তারপর কী তৈরি করুন ক্লিক করে নিশ্চিত করুন।

  3. কীটি ধারণকারী JSON ফাইলটি নিরাপদে সংরক্ষণ করুন।

কোনও পরিষেবা অ্যাকাউন্টের মাধ্যমে অনুমোদন দেওয়ার সময়, আপনার অ্যাপ্লিকেশনে শংসাপত্র সরবরাহ করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে। আপনি হয় GOOGLE_APPLICATION_CREDENTIALS পরিবেশ পরিবর্তনশীল সেট করতে পারেন, অথবা আপনি কোডে পরিষেবা অ্যাকাউন্ট কী-তে স্পষ্টভাবে পথটি পাস করতে পারেন। প্রথম বিকল্পটি আরও নিরাপদ এবং এটি দৃঢ়ভাবে সুপারিশ করা হয়।

পরিবেশ পরিবর্তনশীল সেট করতে:

আপনার সার্ভিস অ্যাকাউন্ট কী ধারণকারী JSON ফাইলের ফাইল পাথে GOOGLE_APPLICATION_CREDENTIALS পরিবেশগত ভেরিয়েবল সেট করুন। এই ভেরিয়েবলটি শুধুমাত্র আপনার বর্তমান শেল সেশনের ক্ষেত্রে প্রযোজ্য, তাই আপনি যদি একটি নতুন সেশন খোলেন, তাহলে ভেরিয়েবলটি আবার সেট করুন।

লিনাক্স বা ম্যাকওএস

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

জানালা

পাওয়ারশেলের সাথে:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

উপরের ধাপগুলি সম্পন্ন করার পরে, অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়ালস (ADC) আপনার ক্রেডেনশিয়ালগুলি পরোক্ষভাবে নির্ধারণ করতে সক্ষম হবে, যা আপনাকে নন-গুগল পরিবেশে পরীক্ষা করার সময় বা চালানোর সময় পরিষেবা অ্যাকাউন্ট ক্রেডেনশিয়ালগুলি ব্যবহার করার অনুমতি দেবে।

টোকেন অ্যাক্সেস করতে শংসাপত্র ব্যবহার করুন

যদি না আপনি Firebase Admin SDK ব্যবহার করেন, যা স্বয়ংক্রিয়ভাবে অনুমোদন পরিচালনা করে, তাহলে আপনাকে অ্যাক্সেস টোকেনটি মিন্ট করতে হবে এবং অনুরোধ পাঠানোর জন্য এটি যোগ করতে হবে।

স্বল্পস্থায়ী OAuth 2.0 অ্যাক্সেস টোকেন পুনরুদ্ধার করতে আপনার পছন্দের ভাষার জন্য Google Auth লাইব্রেরির সাথে আপনার Firebase শংসাপত্রগুলি ব্যবহার করুন:

নোড.জেএস

 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 ওয়েব টোকেন দেখুন।

পাইথন

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: Bearer <access_token> ফর্ম্যাটে Authorization হেডারের মান হিসেবে টোকেনটি যোগ করুন :

নোড.জেএস

headers: {
  'Authorization': 'Bearer ' + accessToken
}

পাইথন

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 টোকেন ব্যবহার করে। এটি আপনাকে অন্যদের পক্ষে বার্তা পাঠানোর সময় একটি প্রকল্পে পরিষেবা অ্যাকাউন্ট ব্যবস্থাপনা কেন্দ্রীভূত করতে দেয়। এটি কীভাবে করবেন তা শিখতে, নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন:

  1. API সক্ষম করুন: নিশ্চিত করুন যে প্রেরক প্রকল্পে Firebase ক্লাউড মেসেজিং API সক্ষম আছে।
  2. পরিষেবা অ্যাকাউন্ট তৈরি করুন: প্রেরক প্রকল্পে একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন।
  3. অনুমতি প্রদান: লক্ষ্য প্রকল্পে, পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানাটিকে IAM পৃষ্ঠায় Firebase Cloud Messaging API অ্যাডমিন ভূমিকা প্রদান করুন। এটি অন্য প্রকল্পের পরিষেবা অ্যাকাউন্টকে লক্ষ্য প্রকল্পে বার্তা পাঠাতে অনুমতি দেয়।
  4. টোকেন পান: প্রেরক প্রকল্পে পরিষেবা অ্যাকাউন্টের জন্য একটি OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করুন । আপনি এটি যেকোনো একটির মাধ্যমে করতে পারেন:
    • সার্ভিস অ্যাকাউন্ট কী JSON ফাইল ডাউনলোড এবং ব্যবহার করা হচ্ছে।
    • বিকল্পভাবে, যদি আপনার পরিষেবা গুগল ক্লাউডে চলছে তবে ওয়ার্কলোড আইডেন্টিটি ব্যবহার করুন।
  5. অনুরোধ পাঠান: আপনার অনুরোধ পাঠানোর Authorization শিরোনামে প্রাপ্ত অ্যাক্সেস টোকেনটি ব্যবহার করুন। লক্ষ্য প্রকল্পের জন্য HTTP v1 এন্ডপয়েন্টে অনুরোধটি করতে হবে:
        POST https://fcm.googleapis.com/v1/TARGET_PROJECT_ID/messages:send

নির্দিষ্ট ডিভাইসে বার্তা পাঠান

একটি নির্দিষ্ট ডিভাইসে পাঠাতে, দেখানো পদ্ধতিতে ডিভাইসের নিবন্ধন টোকেনটি পাস করুন।

বিশ্রাম

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 অবজেক্ট হবে যার মধ্যে বার্তা ID থাকবে:

    {
      "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://cat.10515.net/1.jpg"
    }
  }
}

চালান

API Explorer- এ নমুনাটি চেষ্টা করতে Run-এ ক্লিক করুন।