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

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

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

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

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

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

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

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

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

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

Google Application Default Credentials (ADC) নিম্নলিখিত ক্রমে আপনার শংসাপত্রগুলি পরীক্ষা করে:

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

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

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

নিম্নলিখিত প্রশাসক SDK কোড উদাহরণ এই কৌশল চিত্রিত. উদাহরণটি স্পষ্টভাবে অ্যাপ্লিকেশন শংসাপত্রগুলি নির্দিষ্ট করে না। যাইহোক, যতক্ষণ পর্যন্ত এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে বা যতক্ষণ পর্যন্ত অ্যাপ্লিকেশনটি Compute Engine , Google Kubernetes Engine , App Engine বা ক্লাউড ফাংশনে চলছে ততক্ষণ পর্যন্ত 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);

পাইথন

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(),
});

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

Firebase প্রকল্পগুলি Google পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে Firebase সার্ভার API কল করতে ব্যবহার করতে পারেন৷ আপনি যদি স্থানীয়ভাবে কোড ডেভেলপ করছেন বা আপনার অ্যাপ্লিকেশনটি প্রাঙ্গনে স্থাপন করছেন, আপনি সার্ভার অনুরোধ অনুমোদন করতে এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন৷

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

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

  1. Firebase কনসোলে, সেটিংস > পরিষেবা অ্যাকাউন্ট খুলুন।

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

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

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

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

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

লিনাক্স বা ম্যাকোস

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

পাইথন

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
}

পাইথন

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 ক্লাউড মেসেজিং API অ্যাডমিন ভূমিকা মঞ্জুর করুন৷ এটি অন্য প্রকল্পের পরিষেবা অ্যাকাউন্টকে লক্ষ্য প্রকল্পে বার্তা পাঠাতে অনুমতি দেয়।
  4. টোকেন প্রাপ্ত করুন: প্রেরক প্রকল্পে পরিষেবা অ্যাকাউন্টের জন্য একটি OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করুন ৷ আপনি যেকোনো একটি দ্বারা এটি করতে পারেন:
    • পরিষেবা অ্যাকাউন্ট কী JSON ফাইল ডাউনলোড এবং ব্যবহার করা হচ্ছে।
    • বিকল্পভাবে, আপনার পরিষেবা Google ক্লাউডে চললে ওয়ার্কলোড আইডেন্টিটি ব্যবহার করুন।
  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 অবজেক্ট যাতে মেসেজ আইডি থাকে:

    {
      "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 এক্সপ্লোরারে নমুনা চেষ্টা করতে রান ক্লিক করুন।