অনুমতি পাঠান অনুরোধ

আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে FCM এ পাঠানো অনুরোধ অনুমোদিত হতে হবে।

অনুমোদন 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 নিহিতভাবে শংসাপত্রগুলি খুঁজে পেতে সক্ষম।

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 পরিবেশে পরীক্ষা বা চালানোর সময় পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি ব্যবহার করার অনুমতি দেয়।

মিন্ট অ্যাক্সেস টোকেন করতে প্রমাণপত্রাদি ব্যবহার করুন

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

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;