REST অনুরোধগুলি প্রমাণীকরণ করুন

Firebase SDK গুলি আপনার পক্ষ থেকে Firebase Realtime Database সাথে সমস্ত প্রমাণীকরণ এবং যোগাযোগ পরিচালনা করে। যাইহোক, যখন আপনি এমন একটি পরিবেশে থাকেন যেখানে ক্লায়েন্ট SDK নেই বা আপনি একটি স্থায়ী ডাটাবেস সংযোগের ওভারহেড এড়াতে চান, আপনি ডেটা পড়তে এবং লিখতে Realtime Database REST API ব্যবহার করতে পারেন।

নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটির মাধ্যমে ব্যবহারকারীদের প্রমাণীকরণ করুন:

  1. Google OAuth2 অ্যাক্সেস টোকেন - সাধারণত, Realtime Database থেকে পড়ার এবং লেখার ক্ষমতা Realtime Database নিয়ম দ্বারা নিয়ন্ত্রিত হয়। কিন্তু, আপনি একটি সার্ভার থেকে আপনার ডেটা অ্যাক্সেস করতে পারেন এবং একটি পরিষেবা অ্যাকাউন্ট থেকে তৈরি করা Google OAuth2 অ্যাক্সেস টোকেন দিয়ে সেই সার্ভারটিকে আপনার ডেটাতে সম্পূর্ণ রিড এবং রাইট অ্যাক্সেস প্রদান করতে পারেন।

  2. ফায়ারবেস আইডি টোকেন - আপনি ক্লায়েন্ট SDK-তে Realtime Database নিয়মের সাথে অ্যাক্সেস সীমিত করার মতো একজন পৃথক ব্যবহারকারী হিসাবে প্রমাণীকৃত অনুরোধগুলিও পাঠাতে চাইতে পারেন। REST API ক্লায়েন্ট SDK-এর দ্বারা ব্যবহৃত একই Firebase ID টোকেন গ্রহণ করে।

Google OAuth2 অ্যাক্সেস টোকেন

আপনার Realtime Database বিধি অনুসারে সর্বজনীনভাবে পঠনযোগ্য বা লেখার যোগ্য যে কোনও ডেটা REST API-এর মাধ্যমে কোনও প্রমাণীকরণ ছাড়াই পঠনযোগ্য এবং লেখার যোগ্য। যাইহোক, যদি আপনি চান যে আপনার সার্ভার আপনার Realtime Database নিয়মগুলিকে বাইপাস করুক, আপনাকে আপনার পড়ার এবং লেখার অনুরোধগুলিকে প্রমাণীকরণ করতে হবে। Google OAuth2 এর মাধ্যমে প্রমাণীকরণের জন্য নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন:

  1. একটি অ্যাক্সেস টোকেন তৈরি করুন।
  2. সেই অ্যাক্সেস টোকেন দিয়ে প্রমাণীকরণ করুন।

একটি অ্যাক্সেস টোকেন তৈরি করুন

Realtime Database REST API স্ট্যান্ডার্ড Google OAuth2 অ্যাক্সেস টোকেন গ্রহণ করে। অ্যাক্সেস টোকেনগুলি আপনার Realtime Database যথাযথ অনুমতি সহ একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে তৈরি করা যেতে পারে। Firebase কনসোলের সার্ভিস অ্যাকাউন্টস বিভাগের নীচে জেনারেট নিউ প্রাইভেট কী বোতামে ক্লিক করলে আপনি সহজেই একটি নতুন পরিষেবা অ্যাকাউন্ট কী ফাইল তৈরি করতে পারবেন যদি আপনার কাছে আগে থেকে না থাকে।

একবার আপনার কাছে একটি পরিষেবা অ্যাকাউন্ট কী ফাইল হয়ে গেলে, আপনি নিম্নলিখিত প্রয়োজনীয় সুযোগগুলির সাথে একটি Google OAuth2 অ্যাক্সেস টোকেন তৈরি করতে Google API ক্লায়েন্ট লাইব্রেরিগুলির একটি ব্যবহার করতে পারেন:

  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/firebase.database

এখানে কিছু উদাহরণ বাস্তবায়ন রয়েছে যা দেখায় কিভাবে Google OAuth2 অ্যাক্সেস টোকেন তৈরি করতে হয় Realtime Database REST API-কে বিভিন্ন ভাষায় প্রমাণীকরণ করতে:

Node.js

Node.js এর জন্য Google API ক্লায়েন্ট লাইব্রেরি ব্যবহার করা:

var {google} = require("googleapis");

// Load the service account key JSON file.
var serviceAccount = require("path/to/serviceAccountKey.json");

// Define the required scopes.
var scopes = [
  "https://www.googleapis.com/auth/userinfo.email",
  "https://www.googleapis.com/auth/firebase.database"
];

// Authenticate a JWT client with the service account.
var jwtClient = new google.auth.JWT(
  serviceAccount.client_email,
  null,
  serviceAccount.private_key,
  scopes
);

// Use the JWT client to generate an access token.
jwtClient.authorize(function(error, tokens) {
  if (error) {
    console.log("Error making request to generate access token:", error);
  } else if (tokens.access_token === null) {
    console.log("Provided service account does not have permission to generate access tokens");
  } else {
    var accessToken = tokens.access_token;

    // See the "Using the access token" section below for information
    // on how to use the access token to send authenticated requests to
    // the Realtime Database REST API.
  }
});

জাভা

জাভার জন্য Google API ক্লায়েন্ট লাইব্রেরি ব্যবহার করা:

// Load the service account key JSON file
FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

// Authenticate a Google credential with the service account
GoogleCredential googleCred = GoogleCredential.fromStream(serviceAccount);

// Add the required scopes to the Google credential
GoogleCredential scoped = googleCred.createScoped(
    Arrays.asList(
      "https://www.googleapis.com/auth/firebase.database",
      "https://www.googleapis.com/auth/userinfo.email"
    )
);

// Use the Google credential to generate an access token
scoped.refreshToken();
String token = scoped.getAccessToken();

// See the "Using the access token" section below for information
// on how to use the access token to send authenticated requests to the
// Realtime Database REST API.

পাইথন

google-auth লাইব্রেরি ব্যবহার করে:

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession

# Define the required scopes
scopes = [
  "https://www.googleapis.com/auth/userinfo.email",
  "https://www.googleapis.com/auth/firebase.database"
]

# Authenticate a credential with the service account
credentials = service_account.Credentials.from_service_account_file(
    "path/to/serviceAccountKey.json", scopes=scopes)

# Use the credentials object to authenticate a Requests session.
authed_session = AuthorizedSession(credentials)
response = authed_session.get(
    "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json")

# Or, use the token directly, as described in the "Authenticate with an
# access token" section below. (not recommended)
request = google.auth.transport.requests.Request()
credentials.refresh(request)
access_token = credentials.token

একটি অ্যাক্সেস টোকেন দিয়ে প্রমাণীকরণ করুন

Realtime Database REST API-এ প্রমাণীকৃত অনুরোধগুলি পাঠাতে, উপরে উত্পন্ন Authorization: Bearer <ACCESS_TOKEN> হেডার বা access_token=<ACCESS_TOKEN> ক্যোয়ারী স্ট্রিং প্যারামিটার। অ্যাডার নাম পড়ার জন্য curl অনুরোধের একটি উদাহরণ এখানে রয়েছে:

curl "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?access_token=<ACCESS_TOKEN>"

আপনার Realtime Database নামের সাথে <DATABASE_NAME> এবং একটি Google OAuth2 অ্যাক্সেস টোকেন দিয়ে <ACCESS_TOKEN> প্রতিস্থাপন করা নিশ্চিত করুন।

একটি সফল অনুরোধ একটি 200 OK HTTP স্ট্যাটাস কোড দ্বারা নির্দেশিত হবে। প্রতিক্রিয়াটিতে পুনরুদ্ধার করা ডেটা রয়েছে:

{"first":"Ada","last":"Lovelace"}

ফায়ারবেস আইডি টোকেন

যখন একজন ব্যবহারকারী বা ডিভাইস Firebase Authentication ব্যবহার করে সাইন ইন করে, তখন Firebase একটি সংশ্লিষ্ট আইডি টোকেন তৈরি করে যা তাদের স্বতন্ত্রভাবে সনাক্ত করে এবং তাদের Realtime Database এবং Cloud Storage মতো বিভিন্ন সংস্থানে অ্যাক্সেস দেয়। Realtime Database REST API প্রমাণীকরণ করতে এবং সেই ব্যবহারকারীর পক্ষে অনুরোধ করতে আপনি সেই ID টোকেনটি পুনরায় ব্যবহার করতে পারেন।

একটি আইডি টোকেন তৈরি করুন

ক্লায়েন্টের কাছ থেকে Firebase আইডি টোকেন পুনরুদ্ধার করতে, ক্লায়েন্টে আইডি টোকেন পুনরুদ্ধার করার ধাপগুলি অনুসরণ করুন।

নোট করুন যে আইডি টোকেনগুলি অল্প সময়ের পরে মেয়াদ শেষ হয়ে যায় এবং সেগুলি পুনরুদ্ধার করার পরে যত তাড়াতাড়ি সম্ভব ব্যবহার করা উচিত।

একটি আইডি টোকেন দিয়ে প্রমাণীকরণ করুন

Realtime Database REST API-এ প্রমাণীকৃত অনুরোধ পাঠাতে, উপরে উত্পন্ন আইডি টোকেনটি auth=<ID_TOKEN> ক্যোয়ারী স্ট্রিং প্যারামিটার হিসাবে পাস করুন। অ্যাডার নাম পড়ার জন্য curl অনুরোধের একটি উদাহরণ এখানে রয়েছে:

curl "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?auth=<ID_TOKEN>"

আপনার Realtime Database নামের সাথে <DATABASE_NAME> এবং একটি Firebase ID টোকেন দিয়ে <ID_TOKEN> প্রতিস্থাপন করা নিশ্চিত করুন।

একটি সফল অনুরোধ একটি 200 OK HTTP স্ট্যাটাস কোড দ্বারা নির্দেশিত হবে। প্রতিক্রিয়াটিতে পুনরুদ্ধার করা ডেটা রয়েছে:

{"first":"Ada","last":"Lovelace"}

উত্তরাধিকার টোকেন

আপনি যদি এখনও লিগ্যাসি ফায়ারবেস প্রমাণীকরণ টোকেন ব্যবহার করে থাকেন তবে আমরা উপরে বর্ণিত প্রমাণীকরণ পদ্ধতিগুলির একটিতে আপনার REST প্রমাণীকরণ আপডেট করার পরামর্শ দিই।

Realtime Database REST API এখনও গোপনীয়তা সহ লিগ্যাসি প্রমাণীকরণ টোকেনের মাধ্যমে প্রমাণীকরণ সমর্থন করে। আপনার Realtime Database গোপনীয়তাগুলি Firebase কনসোলের পরিষেবা অ্যাকাউন্ট বিভাগে পাওয়া যাবে।

গোপনীয়তা দীর্ঘজীবী শংসাপত্র. আমরা একটি প্রকল্প থেকে গোপন অ্যাক্সেস সহ ব্যবহারকারীদের (যেমন মালিকদের) সরানোর সময় একটি নতুন গোপনীয়তা তৈরি করার এবং বিদ্যমানটিকে প্রত্যাহার করার পরামর্শ দিই৷