Google 致力于为黑人社区推动种族平等。查看具体举措

অনুরোধ প্রেরণ অনুমোদন

আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে FCM- এ পাঠানো অনুরোধ অবশ্যই অনুমোদিত হতে হবে। লিগ্যাসি HTTP এবং HTTP v1 API অনুমোদনের মধ্যে এই গুরুত্বপূর্ণ পার্থক্যগুলি লক্ষ্য করুন:

  • FCM HTTP v1 API স্বল্পকালীন OAuth 2.0 অ্যাক্সেস টোকেন সহ অনুরোধ অনুমোদন করে। এই টোকেনটি মিন্ট করতে, আপনি গুগল অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করতে পারেন (গুগল সার্ভার এনভায়রনমেন্টে) এবং/অথবা ম্যানুয়ালি একটি পরিষেবা অ্যাকাউন্টের জন্য তৈরি একটি JSON প্রাইভেট কী ফাইল থেকে প্রয়োজনীয় শংসাপত্রগুলি পেতে পারেন। আপনি যদি মেসেজ পাঠাতে Firebase অ্যাডমিন SDK ব্যবহার করেন, লাইব্রেরি আপনার জন্য টোকেন পরিচালনা করে।
  • উত্তরাধিকার প্রোটোকলগুলি শুধুমাত্র Firebase কনসোল থেকে প্রাপ্ত দীর্ঘস্থায়ী API কী ব্যবহার করতে পারে।

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

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

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

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

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

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

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

  1. কিনা এনভায়রনমেন্ট ভেরিয়েবল এডিসি চেক GOOGLE_APPLICATION_CREDENTIALS সেট করা হয়। যদি ভেরিয়েবল সেট করা থাকে, ADC সার্ভিস অ্যাকাউন্ট ফাইল ব্যবহার করে যা ভেরিয়েবল নির্দেশ করে।

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

  3. যদি এডিসি উপরের শংসাপত্রগুলির মধ্যে একটি ব্যবহার করতে না পারে, সিস্টেমটি একটি ত্রুটি ছুঁড়ে ফেলে।

নিম্নলিখিত অ্যাডমিন এসডিকে কোড উদাহরণ এই কৌশল ব্যাখ্যা করে। উদাহরণটি স্পষ্টভাবে অ্যাপ্লিকেশন শংসাপত্রগুলি নির্দিষ্ট করে না। যাইহোক, 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 গুলি কল ব্যবহার করতে পারেন। আপনি যদি স্থানীয়ভাবে কোড ডেভেলপ করছেন অথবা আপনার আবেদনটি প্রাঙ্গনে স্থাপন করছেন, তাহলে সার্ভার রিকোয়েস্ট অনুমোদনের জন্য আপনি এই সার্ভিস অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন।

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

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

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

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

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

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

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

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

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

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

উইন্ডোজ

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

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

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

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

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

আপনার Firebase পরিচয়পত্র সঙ্গে একসঙ্গে ব্যবহার করুন গুগল প্রমাণীকরণ লাইব্রেরি টোকেন একটি আকালিক OAuth এর 2.0 এক্সেস পুনরুদ্ধার করতে আপনার পছন্দের ভাষা জন্য:

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

এই উদাহরণে, গুগল এপিআই ক্লায়েন্ট লাইব্রেরি একটি JSON ওয়েব টোকেন বা JWT দিয়ে অনুরোধটি প্রমাণ করে। আরো তথ্যের জন্য, দেখুন তাদেরকে JSON ওয়েব টোকেন

পাইথন

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

জাভা

private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  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 " + getAccessToken());
httpURLConnection.setRequestProperty("Content-Type", "application/json; UTF-8");
return httpURLConnection;

লিগ্যাসি প্রোটোকল পাঠানোর অনুরোধ অনুমোদন করুন

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

লিগ্যাসি সার্ভার কীগুলি স্থানান্তর করুন

মার্চ ২০২০ থেকে শুরু করে, FCM লিগ্যাসি সার্ভার কী তৈরি করা বন্ধ করে দিয়েছে। বর্তমান উত্তরাধিকার সার্ভার কী কাজ চলতে থাকবে, কিন্তু আমরা সুপারিশ করছি যে আপনি পরিবর্তে কী লেবেল সার্ভার কী নতুন সংস্করণ ব্যবহার Firebase কনসোল

আপনি যদি একটি বিদ্যমান উত্তরাধিকার সার্ভার কী মুছে ফেলতে চান, তাহলে আপনি তা করতে পারেন Google ক্লাউড কনসোলে

HTTP অনুরোধ অনুমোদন করুন

একটি বার্তা অনুরোধ দুটি অংশ নিয়ে গঠিত: HTTP হেডার এবং HTTP বডি। HTTP হেডারে নিম্নলিখিত শিরোনাম থাকতে হবে:

  • Authorization : কী = YOUR_SERVER_KEY
    নিশ্চিত করুন এই সার্ভার কী, যার মান পাওয়া যায় ক্লাউড মেসেজিং Firebase কনসোল সেটিংসে পেইনের ট্যাব। অ্যান্ড্রয়েড, আইওএস এবং ব্রাউজার কীগুলি এফসিএম প্রত্যাখ্যান করেছে।
  • Content-Type : application/json তাদেরকে JSON জন্য; application/x-www-form-urlencoded;charset=UTF-8 প্লেইন টেক্সট জন্য।
    তাহলে Content-Type বাদ দেওয়া হয়, বিন্যাস প্লেইন টেক্সট হতে অধিকৃত হয়।

উদাহরণ স্বরূপ:

Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
  "data" : {
    ...
  },
}

দেখুন বিল্ড পাঠান অনুরোধ পাঠাতে অনুরোধ তৈরি পূর্ণ বিবরণের জন্য। উত্তরাধিকার HTTP- র প্রোটোকল রেফারেন্স সকল প্যারামিটার আপনার বার্তা ধারণ করতে পারে একটি তালিকা প্রদান করে।

একটি সার্ভার কী এর বৈধতা পরীক্ষা করা হচ্ছে

বার্তা পাঠানোর সময় যদি আপনি প্রমাণীকরণ ত্রুটি পান, আপনার সার্ভার কীটির বৈধতা পরীক্ষা করুন। উদাহরণস্বরূপ, লিনাক্সে, নিম্নলিখিত কমান্ডটি চালান:

api_key=YOUR_SERVER_KEY

curl --header "Authorization: key=$api_key" \
     --header Content-Type:"application/json" \
     https://fcm.googleapis.com/fcm/send \
     -d "{\"registration_ids\":[\"ABC\"]}"

যদি আপনি 401 HTTP স্ট্যাটাস কোড পান, আপনার সার্ভার কীটি বৈধ নয়।

একটি XMPP সংযোগ অনুমোদন করুন

XMPP এর সাহায্যে, আপনি FCM সার্ভারগুলির সাথে একটি স্থায়ী, অসিঙ্ক্রোনাস, দ্বি -নির্দেশক সংযোগ বজায় রাখতে পারেন। সংযোগটি আপনার সার্ভার এবং আপনার ব্যবহারকারীদের FCM- সংযুক্ত ডিভাইসের মধ্যে বার্তা প্রেরণ এবং গ্রহণ করতে ব্যবহার করা যেতে পারে।

FCM- এর সাথে দীর্ঘস্থায়ী সংযোগ পরিচালনা করতে আপনি বেশিরভাগ XMPP লাইব্রেরি ব্যবহার করতে পারেন। পাওয়া XMPP এ রান শেষবিন্দু fcm-xmpp.googleapis.com:5235 । যখন অ প্রকাশনা ব্যবহারকারীদের সাথে কার্যকারিতা পরীক্ষা আপনি পরিবর্তে এ প্রাক উৎপাদন সার্ভারের সাথে সংযোগ করা উচিত fcm-xmpp.googleapis.com:5236 (বিভিন্ন বন্দর নোট)।

প্রি-প্রোডাকশনের নিয়মিত পরীক্ষা (একটি ছোট পরিবেশ যেখানে সর্বশেষ এফসিএম তৈরি করে) পরীক্ষা কোড থেকে প্রকৃত ব্যবহারকারীদের বিচ্ছিন্ন করার জন্য উপকারী। টেস্ট ডিভাইস এবং পরীক্ষা কোডে সংযোগ fcm-xmpp.googleapis.com:5236 একটি ভিন্ন FCM প্রেরক ID ব্যবহার প্রকাশনা ব্যবহারকারীদের পরীক্ষা বার্তা পাঠানোর বা পরীক্ষা সংযোগের মাধ্যমে উৎপাদন ট্রাফিক থেকে মূল প্রজেক্টের বার্তা প্রেরণের কোনো ঝুঁকি এড়াতে করা উচিত নয়।

সংযোগের দুটি গুরুত্বপূর্ণ প্রয়োজনীয়তা রয়েছে:

  • আপনাকে অবশ্যই একটি ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) সংযোগ চালু করতে হবে। লক্ষ্য করুন FCM বর্তমানে সমর্থন করে না STARTTLS এক্সটেনশন
  • FCM একটি SASL প্লেইন প্রমাণীকরণ ব্যবহার প্রক্রিয়া প্রয়োজন <your_FCM_Sender_Id>@fcm.googleapis.com (FCM প্রেরক আইডি ) এবং পাসওয়ার্ড হিসাবে সার্ভার কী। এই মান পাওয়া যায় ক্লাউড মেসেজিং Firebase কনসোল সেটিংসে পেইনের ট্যাব।

যদি কোন সময়ে সংযোগ ব্যর্থ হয়, আপনি অবিলম্বে পুনরায় সংযোগ করা উচিত। প্রমাণীকরণের পরে ঘটে যাওয়া সংযোগ বিচ্ছিন্ন হওয়ার পরে পিছিয়ে যাওয়ার দরকার নেই। প্রত্যেকের জন্য প্রেরক আইডি , FCM সমান্তরাল 2500 সংযোগ দেয়।

নিচের স্নিপেটগুলি ব্যাখ্যা করে যে কিভাবে FCM- এর সাথে একটি XMPP সংযোগের জন্য প্রমাণীকরণ এবং অনুমোদন করতে হয়।

XMPP সার্ভার

XMPP সার্ভার FCM- এর সাথে সংযোগের অনুরোধ করে

<stream:stream to="fcm.googleapis.com"
        version="1.0" xmlns="jabber:client"
        xmlns:stream="http://etherx.jabber.org/streams">

এফসিএম

FCM সংযোগ প্রর্দশিত হবে এবং সহ প্রমাণীকরণ প্রক্রিয়া, অনুরোধ PLAIN পদ্ধতি।

<stream:features>
  <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
    <mechanism>X-OAUTH2</mechanism>
    <mechanism>X-GOOGLE-TOKEN</mechanism>
    <mechanism>PLAIN</mechanism>
  </mechanisms>
</stream:features>

XMPP সার্ভার

পাওয়া XMPP সার্ভার ব্যবহার জবাব দিতে হবে PLAIN প্রমাণীকরণ পদ্ধতি, থেকে সার্ভার কী প্রদান ক্লাউড মেসেজিং Firebase কনসোল সেটিংসে পেইনের ট্যাব।

<auth mechanism="PLAIN"
xmlns="urn:ietf:params:xml:ns:xmpp-sasl">MTI2MjAwMzQ3OTMzQHByb2plY3RzLmdjbS5hb
mFTeUIzcmNaTmtmbnFLZEZiOW1oekNCaVlwT1JEQTJKV1d0dw==</auth>

এফসিএম

<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>

XMPP সার্ভার

<stream:stream to="fcm.googleapis.com"
        version="1.0" xmlns="jabber:client"
        xmlns:stream="http://etherx.jabber.org/streams">

এফসিএম

<stream:features>
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/>
  <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>
</stream:features>

XMPP সার্ভার

<iq type="set">
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"></bind>
</iq>

এফসিএম

<iq type="result">
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
    <jid>SENDER_ID@fcm.googleapis.com/RESOURCE</jid>
  </bind>
</iq>

দ্রষ্টব্য: বার্তাগুলি রাউটিং করার সময় FCM আবদ্ধ সম্পদ ব্যবহার করে না।

দেখুন বিল্ড পাঠান অনুরোধ পাঠাতে অনুরোধ তৈরি পূর্ণ বিবরণের জন্য। উত্তরাধিকার পাওয়া XMPP প্রোটোকল রেফারেন্স সকল প্যারামিটার আপনার বার্তা ধারণ করতে পারে একটি তালিকা প্রদান করে।