Firebase SDK আপনার হয়ে সব যাচাইকরণ ও Firebase Realtime Database-এর সাথে যোগাযোগ ম্যানেজ করে। তবে, আপনি এমন পরিবেশে থাকলে যেখানে ক্লায়েন্ট SDK নেই অথবা আপনি স্থায়ী ডেটাবেস কানেকশনের ওভারহেড এড়াতে চাইলে, ডেটা পড়া ও লেখার জন্য Realtime Database REST API ব্যবহার করতে পারেন।
নিম্নলিখিত যেকোনও একটি পদ্ধতির মাধ্যমে ব্যবহারকারীদের যাচাই করুন:
Google OAuth2 অ্যাক্সেস টোকেন - সাধারণত, Realtime Database থেকে ডেটা রিড ও রাইট করার ক্ষমতা Realtime Database নিয়ম দ্বারা পরিচালিত হয়। তবে, আপনি কোনও সার্ভার থেকে আপনার ডেটা অ্যাক্সেস করতে পারবেন এবং পরিষেবা অ্যাকাউন্ট থেকে তৈরি করা Google OAuth2 অ্যাক্সেস টোকেনের মাধ্যমে আপনার ডেটা সম্পূর্ণভাবে পড়া ও লেখার অ্যাক্সেস সেই সার্ভারকে দিতে পারবেন।
Firebase ID টোকেন - আপনি হয়ত কোনও স্বতন্ত্র ব্যবহারকারী হিসেবে যাচাই করা অনুরোধ পাঠাতে চাইবেন, যেমন ক্লায়েন্ট SDK-তে Realtime Database নিয়মাবলী সহ অ্যাক্সেস সীমিত করা। REST API, ক্লায়েন্ট SDK-এর ব্যবহার করা একই Firebase ID টোকেন গ্রহণ করে।
Google OAuth2 অ্যাক্সেস টোকেন
আপনার Realtime Database নিয়ম অনুযায়ী সর্বজনীনভাবে পাঠযোগ্য বা লেখার যোগ্য যেকোনও ডেটা REST API-এর মাধ্যমে কোনও যাচাইকরণ ছাড়াই পাঠযোগ্য এবং লেখার যোগ্য। তবে, আপনার সার্ভার যদি Realtime Database নিয়ম বাইপাস করতে চায়, তাহলে আপনার পড়া ও লেখার অনুরোধ যাচাই করতে হবে। Google OAuth2-এর মাধ্যমে যাচাইকরণের জন্য নিম্নলিখিত ধাপগুলি অনুসরণ করতে হবে:
- অ্যাক্সেস টোকেন জেনারেট করুন।
- সেই অ্যাক্সেস টোকেন দিয়ে যাচাই করুন।
অ্যাক্সেস টোকেন জেনারেট করুন
Realtime Database REST API স্ট্যান্ডার্ড Google OAuth2 অ্যাক্সেস টোকেন গ্রহণ করে। আপনার Realtime Database-এর জন্য সঠিক অনুমতি সহ একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে অ্যাক্সেস টোকেন তৈরি করা যেতে পারে। Firebase কনসোলের পরিষেবা অ্যাকাউন্ট বিভাগের নিচে নতুন ব্যক্তিগত কী তৈরি করুন বোতামে ক্লিক করলে, আপনার কাছে আগে থেকে কোনও পরিষেবা অ্যাকাউন্ট কী ফাইল না থাকলে, আপনি সহজেই একটি নতুন ফাইল তৈরি করতে পারবেন।
আপনার কাছে পরিষেবা অ্যাকাউন্ট কী ফাইল থাকলে, আপনি Google API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে নিম্নলিখিত প্রয়োজনীয় স্কোপ সহ Google OAuth2 অ্যাক্সেস টোকেন জেনারেট করতে পারবেন:
https://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/firebase.database
এখানে কিছু উদাহরণ দেওয়া হল যা থেকে বোঝা যাবে যে কীভাবে বিভিন্ন ভাষায় Realtime Database REST API-তে যাচাইকরণের জন্য Google OAuth2 অ্যাক্সেস টোকেন তৈরি করা যায়:
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.
}
});
জাভা
Java-এর জন্য 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.
Python
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> কোয়েরি স্ট্রিং প্যারামিটার হিসেবে উপরে জেনারেট করা Google OAuth2 অ্যাক্সেস টোকেন পাস করুন। এখানে একটি উদাহরণ দেওয়া হল curl
আদার নাম পড়ার অনুরোধ:
curl "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?access_token=<ACCESS_TOKEN>"
<DATABASE_NAME>-এর জায়গায় আপনার Realtime Database-এর নাম এবং <ACCESS_TOKEN>-এর জায়গায় Google OAuth2 অ্যাক্সেস টোকেন লিখতে ভুলবেন না।
অনুরোধ সফল হলে 200 OK HTTP স্ট্যাটাস কোড দেখানো হবে। উত্তরে
যে ডেটা পাওয়া যাচ্ছে তা রয়েছে:
{"first":"Ada","last":"Lovelace"}
Firebase আইডি টোকেন
কোনও ব্যবহারকারী বা ডিভাইস Firebase Authentication ব্যবহার করে সাইন-ইন করলে, Firebase একটি অনুরূপ আইডি টোকেন তৈরি করে যা তাদের অনন্যভাবে শনাক্ত করে এবং তাদের Realtime Database ও Cloud Storage-এর মতো বিভিন্ন রিসোর্সে অ্যাক্সেস দেয়। আপনি Realtime Database REST API যাচাই করতে সেই আইডি টোকেন আবার ব্যবহার করতে এবং সেই ব্যবহারকারীর হয়ে অনুরোধ করতে পারবেন।
আইডি টোকেন জেনারেট করুন
ক্লায়েন্ট থেকে Firebase ID টোকেন ফিরিয়ে আনতে, ক্লায়েন্টে ID টোকেন ফিরিয়ে আনুন লিঙ্কে দেওয়া ধাপগুলি অনুসরণ করুন।
মনে রাখবেন যে ID টোকেনের মেয়াদ অল্প সময়ের মধ্যেই শেষ হয়ে যায় এবং সেগুলি পাওয়ার পরে যত তাড়াতাড়ি সম্ভব ব্যবহার করা উচিত।
আইডি টোকেন দিয়ে যাচাই করুন
Realtime Database REST API-তে যাচাই করা অনুরোধ পাঠাতে,
auth=<ID_TOKEN> কোয়েরি স্ট্রিং প্যারামিটার হিসেবে উপরে তৈরি করা আইডি টোকেন পাস করুন। এখানে
Ada-র নাম পড়ার জন্য curl-এর অনুরোধের একটি উদাহরণ দেওয়া হল:
curl "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?auth=<ID_TOKEN>"
<DATABASE_NAME>-এর জায়গায় আপনার
Realtime Database-এর নাম এবং <ID_TOKEN>-এর জায়গায় Firebase ID টোকেন লিখতে ভুলবেন না।
অনুরোধ সফল হলে 200 OK HTTP স্ট্যাটাস কোড দেখানো হবে। উত্তরে
যে ডেটা পাওয়া যাচ্ছে তা রয়েছে:
{"first":"Ada","last":"Lovelace"}
লিগ্যাসি টোকেন
আপনি এখনও পুরনো Firebase যাচাইকরণ টোকেন ব্যবহার করলে, আমরা সাজেস্ট করি যে আপনার REST যাচাইকরণ উপরে বর্ণিত যাচাইকরণ পদ্ধতির মধ্যে কোনও একটিতে আপডেট করুন।
Realtime Database REST API এখনও সিক্রেট সহ পুরনো যাচাইকরণ টোকেনের মাধ্যমে যাচাইকরণ সমর্থন করে। আপনার Realtime Database সিক্রেট Firebase কনসোলের পরিষেবা অ্যাকাউন্ট বিভাগে পাওয়া যাবে।
সিক্রেট হল দীর্ঘস্থায়ী ক্রেডেনশিয়াল। কোনও প্রোজেক্ট থেকে সিক্রেট অ্যাক্সেস সহ ব্যবহারকারীদের (যেমন মালিক) সরানোর সময় আমরা একটি নতুন সিক্রেট তৈরি করার এবং বিদ্যমানটি প্রত্যাহার করার পরামর্শ দিই।