আপনি ব্যবহারকারীদের Apple আইডি ব্যবহার করে Firebase-এর মাধ্যমে যাচাই করার অনুমতি দিতে পারেন। এর জন্য Firebase SDK ব্যবহার করে শুরু থেকে শেষ পর্যন্ত OAuth 2.0 সাইন-ইন ফ্লো সম্পূর্ণ করতে হবে।
শুরু করার আগে
Apple ব্যবহার করে ব্যবহারকারীদের সাইন-ইন করতে, প্রথমে Apple-এর ডেভেলপার সাইটে Apple-এর মাধ্যমে সাইন-ইন করুন কনফিগার করুন, তারপর আপনার Firebase প্রোজেক্টের জন্য সাইন-ইন প্রদানকারী হিসেবে Apple-কে চালু করুন।
Apple Developer Program-এ যোগ দিন
Apple Developer Program-এর মেম্বাররাই শুধু 'Apple-এর মাধ্যমে সাইন-ইন করুন' ফিচার কনফিগার করতে পারবেন।
Apple-এর মাধ্যমে সাইন-ইন কনফিগার করুন
Apple Developer সাইটে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
-
প্রথম বিভাগে যেভাবে বর্ণনা করা হয়েছে সেইভাবে আপনার অ্যাপের সাথে ওয়েবসাইট যুক্ত করুন ওয়েবের জন্য Apple-এর মাধ্যমে সাইন-ইন কনফিগার করুন। প্রম্পট করা হলে, রিটার্ন URL হিসেবে নিম্নলিখিত URL রেজিস্টার করুন:
https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler
আপনি Firebase কনসোলের
সেটিংস > সাধারণ ট্যাব থেকে আপনার Firebase প্রোজেক্ট আইডি খুঁজে পেতে পারেন।আপনার কাজ হয়ে গেলে, নতুন পরিষেবা আইডি নোট করে নিন, যা পরবর্তী বিভাগে প্রয়োজন হবে।
- একটি Sign In with Apple প্রাইভেট কী তৈরি করুন। পরবর্তী বিভাগে আপনার নতুন ব্যক্তিগত কী ও কী আইডি প্রয়োজন হবে।
-
আপনি যদি Firebase Authentication-এর এমন কোনও ফিচার ব্যবহার করেন যা ব্যবহারকারীদের ইমেল পাঠায়, এর মধ্যে ইমেল লিঙ্ক সাইন-ইন, ইমেল আইডি যাচাইকরণ, অ্যাকাউন্ট পরিবর্তন প্রত্যাহার এবং অন্যান্য ফিচার অন্তর্ভুক্ত, Apple-এর ব্যক্তিগত ইমেল রিলে পরিষেবা কনফিগার করুন এবং
noreply@YOUR_FIREBASE_PROJECT_ID.firebaseapp.com(অথবা আপনার কাস্টমাইজ করা ইমেল টেমপ্লেট ডোমেন) রেজিস্টার করুন যাতে Apple, Firebase Authentication-এর পাঠানো ইমেল অনামিকা করা Apple ইমেল আইডিতে রিলে করতে পারে।
সাইন-ইন প্রদানকারী হিসেবে Apple চালু করুন
- আপনার প্রোজেক্টে Firebase যোগ করুন।
- Firebase কনসোলে, নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
- সাইন-ইন পদ্ধতি ট্যাবে, Apple সাইন-ইন প্রদানকারী চালু করুন। আগের বিভাগে আপনার তৈরি করা পরিষেবা আইডি উল্লেখ করুন। এছাড়াও, OAuth কোড ফ্লো কনফিগারেশন বিভাগে, আপনার Apple টিম আইডি এবং আগের বিভাগে আপনার তৈরি করা ব্যক্তিগত কী ও কী আইডি উল্লেখ করুন।
Apple-এর পরিচয় গোপন রাখা হয় এমন ডেটা সংক্রান্ত প্রয়োজনীয়তা মেনে চলুন
Sign In with Apple ব্যবহারকারীদের সাইন-ইন করার সময় তাদের ইমেল আইডি সহ
ডেটা বেনামী করার বিকল্প দেয়। যেসব ব্যবহারকারী এই বিকল্প বেছে নেন
তাদের ইমেল আইডিতে privaterelay.appleid.com ডোমেন থাকে। আপনার অ্যাপে
Apple-এর মাধ্যমে সাইন-ইন করুন ব্যবহার করলে, আপনাকে অবশ্যই এইসব বেনামী Apple
আইডি সংক্রান্ত Apple-এর প্রযোজ্য
ডেভেলপার নীতি বা শর্তাবলী মেনে চলতে হবে।
এর মধ্যে অন্তর্ভুক্ত হল, আপনি কোনও সরাসরি শনাক্তকরণযোগ্য ব্যক্তিগত তথ্য কোনও বেনামী Apple ID-এর সাথে অ্যাসোসিয়েট করার আগে প্রয়োজনীয় ব্যবহারকারীর সম্মতি নেওয়া। Firebase Authentication ব্যবহার করার সময়, এর মধ্যে নিম্নলিখিত অ্যাকশন থাকতে পারে:
- কোনও ইমেল আইডিকে পরিচয় গোপন করা Apple আইডির সাথে লিঙ্ক করা বা এর উল্টোটা করা।
- কোনও ফোন নম্বরকে পরিচয় গোপন রাখা Apple আইডির সাথে লিঙ্ক করা বা এর উল্টোটা করা
- বেনামী নয় এমন সোশ্যাল ক্রেডেনশিয়াল (Facebook, Google ইত্যাদি) বেনামী Apple ID-র সাথে লিঙ্ক করুন অথবা এর উল্টোটা করুন।
উপরে উল্লিখিত তালিকাটি সম্পূর্ণ নয়। আপনার অ্যাপ Apple-এর প্রয়োজনীয়তা পূরণ করছে কিনা তা নিশ্চিত করতে ডেভেলপার অ্যাকাউন্টের মেম্বারশিপ বিভাগে Apple Developer Program লাইসেন্স চুক্তি দেখুন।
Firebase SDK-এর মাধ্যমে সাইন-ইন ফ্লো ম্যানেজ করা
আপনি কোনও ওয়েব অ্যাপ তৈরি করলে, Firebase-এর সাথে আপনার ব্যবহারকারীদের Apple অ্যাকাউন্ট ব্যবহার করে যাচাই করার সবচেয়ে সহজ উপায় হল Firebase JavaScript SDK-এর মাধ্যমে সম্পূর্ণ সাইন-ইন ফ্লো ম্যানেজ করা।
Firebase JavaScript SDK-এর মাধ্যমে সাইন-ইন ফ্লো ম্যানেজ করতে, এইসব ধাপ অনুসরণ করুন:
সংশ্লিষ্ট প্রদানকারী আইডি apple.com ব্যবহার করে OAuthProvider-এর একটি ইনস্ট্যান্স তৈরি করুন।
Web
import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('apple.com');
Web
var provider = new firebase.auth.OAuthProvider('apple.com');
ঐচ্ছিক: ডিফল্ট স্কোপের বাইরে অতিরিক্ত OAuth 2.0 স্কোপ নির্দিষ্ট করুন যা আপনি যাচাইকরণ প্রদানকারীর কাছে অনুরোধ করতে চান।
Web
provider.addScope('email'); provider.addScope('name');
Web
provider.addScope('email'); provider.addScope('name');
ডিফল্ট হিসেবে, প্রতিটি ইমেল আইডির জন্য একটি অ্যাকাউন্ট চালু করা থাকলে, Firebase ইমেল ও নামের স্কোপের অনুরোধ করে। আপনি এই সেটিং পরিবর্তন করে প্রতিটি ইমেল আইডিতে একাধিক অ্যাকাউন্ট করলে, Firebase, Apple-এর কাছে কোনও স্কোপের অনুরোধ করে না, যদি না আপনি সেগুলি নির্দিষ্ট করেন।
ঐচ্ছিক: আপনি যদি ইংরেজি ছাড়া অন্য কোনও ভাষায় Apple-এর সাইন-ইন স্ক্রিন দেখাতে চান, তাহলে
localeপ্যারামিটার সেট করুন। কাজ করে এমন লোকেল সম্পর্কে জানতে Apple-এর মাধ্যমে সাইন-ইন সংক্রান্ত ডকুমেন্ট দেখুন।Web
provider.setCustomParameters({ // Localize the Apple authentication screen in French. locale: 'fr' });
Web
provider.setCustomParameters({ // Localize the Apple authentication screen in French. locale: 'fr' });
OAuth প্রোভাইডার অবজেক্ট ব্যবহার করে Firebase-এর মাধ্যমে যাচাই করুন। আপনি পপ-আপ উইন্ডো খুলে অথবা সাইন-ইন পৃষ্ঠায় রিডাইরেক্ট করে ব্যবহারকারীদের Apple অ্যাকাউন্ট দিয়ে সাইন-ইন করার জন্য প্রম্পট করতে পারেন। মোবাইল ডিভাইসে রিডাইরেক্ট পদ্ধতি ব্যবহার করা বেশি সুবিধাজনক।
পপ-আপ উইন্ডোর মাধ্যমে সাইন-ইন করতে,
signInWithPopup()-এ কল করুন:Web
import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // The signed-in user info. const user = result.user; // Apple credential const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; // IdP data available using getAdditionalUserInfo(result) // ... }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The credential that was used. const credential = OAuthProvider.credentialFromError(error); // ... });
Web
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // The signed-in user info. var user = result.user; // You can also get the Apple OAuth Access and ID Tokens. var accessToken = credential.accessToken; var idToken = credential.idToken; // IdP data available using getAdditionalUserInfo(result) // ... }) .catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
সাইন-ইন পৃষ্ঠায় রিডাইরেক্ট করে সাইন-ইন করতে,
signInWithRedirect()-এ কল করুন:
signInWithRedirect,linkWithRedirectবাreauthenticateWithRedirectব্যবহার করার সময় পেশাদার পদ্ধতি অনুসরণ করুন।Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
ব্যবহারকারী সাইন-ইন করার প্রসেস সম্পূর্ণ করে পৃষ্ঠায় ফিরে আসার পরে, আপনি
getRedirectResult()কল করে সাইন-ইন ফলাফল পেতে পারেন:Web
import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth"; // Result from Redirect auth flow. const auth = getAuth(); getRedirectResult(auth) .then((result) => { const credential = OAuthProvider.credentialFromResult(result); if (credential) { // You can also get the Apple OAuth Access and ID Tokens. const accessToken = credential.accessToken; const idToken = credential.idToken; } // The signed-in user info. const user = result.user; }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The credential that was used. const credential = OAuthProvider.credentialFromError(error); // ... });
Web
// Result from Redirect auth flow. firebase .auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // You can get the Apple OAuth Access and ID Tokens. var accessToken = credential.accessToken; var idToken = credential.idToken; // IdP data available in result.additionalUserInfo.profile. // ... } // The signed-in user info. var user = result.user; }) .catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
এছাড়াও, আপনি এখানে ভুল ধরতে ও সমাধান করতে পারবেন। সমস্যার কোডের তালিকা দেখতে, API রেফারেন্স দেখুন।
Firebase Auth-এর মাধ্যমে কাজ করে এমন অন্যান্য পরিষেবা প্রদানকারীর মতো Apple কোনও ফটো URL প্রদান করে না।
এছাড়াও, ব্যবহারকারী অ্যাপের সাথে তার ইমেল শেয়ার না করার সিদ্ধান্ত নিলে, Apple সেই ব্যবহারকারীর জন্য একটি অনন্য ইমেল আইডি (
xyz@privaterelay.appleid.comফর্মের) প্রদান করে, যা আপনার অ্যাপের সাথে শেয়ার করা হয়। আপনি ব্যক্তিগত ইমেল রিলে পরিষেবা কনফিগার করলে, Apple বেনামী আইডিতে পাঠানো ইমেল ব্যবহারকারীর আসল ইমেল আইডিতে ফরওয়ার্ড করে।ব্যবহারকারী প্রথমবার সাইন-ইন করলে, Apple শুধুমাত্র ব্যবহারকারীর তথ্য যেমন ডিসপ্লে নাম অ্যাপের সাথে শেয়ার করে। সাধারণত, কোনও ব্যবহারকারী Apple-এর মাধ্যমে প্রথমবার সাইন-ইন করলে Firebase ডিসপ্লে নাম সেভ করে রাখে, যা আপনি
firebase.auth().currentUser.displayName-এর মাধ্যমে পেতে পারেন। তবে, আপনি যদি আগে Firebase ব্যবহার না করে Apple-এর মাধ্যমে অ্যাপে কোনও ব্যবহারকারীকে সাইন-ইন করিয়ে থাকেন, তাহলে Apple, Firebase-কে ব্যবহারকারীর ডিসপ্লে নাম প্রদান করবে না।
আবার যাচাইকরণ এবং অ্যাকাউন্ট লিঙ্ক করা
একই প্যাটার্ন reauthenticateWithPopup() এবং
reauthenticateWithRedirect()-এর সাথে ব্যবহার করা যেতে পারে, যা আপনি সংবেদনশীল অপারেশনের জন্য একটি নতুন
ক্রেডেনশিয়াল পেতে ব্যবহার করতে পারেন যার জন্য সাম্প্রতিক সাইন-ইন প্রয়োজন:
Web
import { getAuth, reauthenticateWithPopup, OAuthProvider } from "firebase/auth"; // Result from Redirect auth flow. const auth = getAuth(); const provider = new OAuthProvider('apple.com'); reauthenticateWithPopup(auth.currentUser, provider) .then((result) => { // User is re-authenticated with fresh tokens minted and can perform // sensitive operations like account deletion, or updating their email // address or password. // The signed-in user info. const user = result.user; // You can also get the Apple OAuth Access and ID Tokens. const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; // ... }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The credential that was used. const credential = OAuthProvider.credentialFromError(error); // ... });
Web
const provider = new firebase.auth.OAuthProvider('apple.com'); firebase .auth() .currentUser .reauthenticateWithPopup(provider) .then((result) => { // User is re-authenticated with fresh tokens minted and can perform // sensitive operations like account deletion, or updating their email // address or password. /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // The signed-in user info. var user = result.user; // You can also get the Apple OAuth Access and ID Tokens. var accessToken = credential.accessToken; var idToken = credential.idToken; // IdP data available in result.additionalUserInfo.profile. // ... }) .catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
এছাড়াও, আগে থেকে থাকা অ্যাকাউন্টের সাথে আলাদা
পরিচয় প্রদানকারীকে লিঙ্ক করতে, আপনি linkWithPopup() ও linkWithRedirect() ব্যবহার করতে পারবেন।
মনে রাখবেন, Apple-এর শর্ত অনুযায়ী, ব্যবহারকারীর Apple অ্যাকাউন্ট অন্য ডেটার সাথে লিঙ্ক করার আগে আপনাকে তার থেকে স্পষ্ট সম্মতি নিতে হবে।
যেমন, বর্তমান Firebase অ্যাকাউন্টের সাথে Facebook অ্যাকাউন্ট লিঙ্ক করতে, ব্যবহারকারীকে Facebook-এ সাইন-ইন করানোর মাধ্যমে আপনি যে অ্যাক্সেস টোকেন পেয়েছেন সেটি ব্যবহার করুন:
Web
import { getAuth, linkWithPopup, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); const provider = new FacebookAuthProvider(); provider.addScope('user_birthday'); // Assuming the current user is an Apple user linking a Facebook provider. linkWithPopup(auth.currentUser, provider) .then((result) => { // Facebook credential is linked to the current Apple user. // ... // The user can now sign in to the same account // with either Apple or Facebook. }) .catch((error) => { // Handle error. });
Web
const provider = new firebase.auth.FacebookAuthProvider(); provider.addScope('user_birthday'); // Assuming the current user is an Apple user linking a Facebook provider. firebase.auth().currentUser.linkWithPopup(provider) .then((result) => { // Facebook credential is linked to the current Apple user. // Facebook additional data available in result.additionalUserInfo.profile, // Additional Facebook OAuth access token can also be retrieved. // result.credential.accessToken // The user can now sign in to the same account // with either Apple or Facebook. }) .catch((error) => { // Handle error. });
Chrome এক্সটেনশনে Firebase-এর মাধ্যমে যাচাই করা
আপনি Chrome এক্সটেনশন অ্যাপ তৈরি করলে, অফস্ক্রিন ডকুমেন্ট সংক্রান্ত নির্দেশিকা দেখুন।
মনে রাখবেন, আপনাকে এখনও Apple-এর সাথে কাস্টম ডোমেন যাচাই করতে হবে, ঠিক যেভাবে ডিফল্ট firebaseapp.com ডোমেন যাচাই করেন:
http://auth.custom.example.com/.well-known/apple-developer-domain-association.txt
টোকেন তুলে নেওয়া
Apple-এর প্রয়োজন অনুযায়ী, অ্যাকাউন্ট তৈরি করা যায় এমন অ্যাপে ব্যবহারকারীকে অ্যাপের মধ্যেই অ্যাকাউন্ট মুছে দেওয়ার প্রক্রিয়া শুরু করার সুবিধা দিতে হবে। এটি App Store পর্যালোচনা নির্দেশিকাতে বর্ণনা করা আছে
এই প্রয়োজনীয়তা পূরণ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
Apple-এর মাধ্যমে সাইন-ইন করুন কনফিগার করুন বিভাগে যেভাবে বলা হয়েছে সেইভাবে, Apple-এর মাধ্যমে সাইন-ইন করুন প্রদানকারীর কনফিগারেশনের পরিষেবা আইডি এবং OAuth কোড ফ্লো কনফিগারেশন বিভাগ পূরণ করেছেন কিনা তা নিশ্চিত করুন।
Firebase-এ Apple-এর মাধ্যমে সাইন-ইন ব্যবহার করে ব্যবহারকারী তৈরি করা হলে, Firebase ব্যবহারকারীর টোকেন সেভ করে না। তাই, টোকেন প্রত্যাহার এবং অ্যাকাউন্ট মুছে দেওয়ার আগে ব্যবহারকারীকে আবার সাইন-ইন করতে বলতে হবে।
তারপরে,
OAuthCredentialথেকে Apple OAuth অ্যাক্সেস টোকেন পান এবং Apple OAuth অ্যাক্সেস টোকেন প্রত্যাহার করতেrevokeAccessToken(auth, token)কল করার জন্য এটি ব্যবহার করুন।const provider = new OAuthProvider('apple.com'); provider.addScope('email'); provider.addScope('name'); const auth = getAuth(); signInWithPopup(auth, provider).then(result => { // Get the Apple OAuth access token. const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; // Revoke the Apple OAuth access token. revokeAccessToken(auth, accessToken) .then(() => { // Token revoked. // Delete the user account. // ... }) .catch(error => { // An error happened. // ... }); });সবশেষে, ব্যবহারকারীর অ্যাকাউন্ট (এবং সংশ্লিষ্ট সব ডেটা) মুছে দিন।
উন্নত: Node.js-এ Firebase-এর মাধ্যমে যাচাইকরণ
Node.js অ্যাপ্লিকেশনে Firebase-এর মাধ্যমে যাচাই করতে:
ব্যবহারকারীকে তার Apple অ্যাকাউন্ট দিয়ে সাইন-ইন করান এবং ব্যবহারকারীর Apple ID টোকেন পান। আপনি বিভিন্ন উপায়ে এটি করতে পারবেন। যেমন, আপনার Node.js অ্যাপে ব্রাউজার ফ্রন্ট এন্ড থাকলে:
আপনার ব্যাকএন্ডে, একটি র্যান্ডম স্ট্রিং ("nonce") তৈরি করুন এবং এটির SHA256 হ্যাশ কম্পিউট করুন। নন্স হল একবার ব্যবহারযোগ্য ভ্যালু যা আপনার ব্যাকএন্ড ও Apple-এর অথ সার্ভারের মধ্যে সিঙ্গেল রাউন্ড ট্রিপ যাচাই করতে ব্যবহার করা হয়।
Web
const crypto = require("crypto"); const string_decoder = require("string_decoder"); // Generate a new random string for each sign-in const generateNonce = (length) => { const decoder = new string_decoder.StringDecoder("ascii"); const buf = Buffer.alloc(length); let nonce = ""; while (nonce.length < length) { crypto.randomFillSync(buf); nonce = decoder.write(buf); } return nonce.slice(0, length); }; const unhashedNonce = generateNonce(10); // SHA256-hashed nonce in hex const hashedNonceHex = crypto.createHash('sha256') .update(unhashedNonce).digest().toString('hex');
Web
const crypto = require("crypto"); const string_decoder = require("string_decoder"); // Generate a new random string for each sign-in const generateNonce = function(length) { const decoder = new string_decoder.StringDecoder("ascii"); const buf = Buffer.alloc(length); var nonce = ""; while (nonce.length < length) { crypto.randomFillSync(buf); nonce = decoder.write(buf); } return nonce.slice(0, length); }; const unhashedNonce = generateNonce(10); // SHA256-hashed nonce in hex const hashedNonceHex = crypto.createHash('sha256') .update(unhashedNonce).digest().toString('hex');
আপনার সাইন-ইন পৃষ্ঠায়, Apple কনফিগারেশনের মাধ্যমে সাইন-ইন করার সময় হ্যাশ করা ননস উল্লেখ করুন:
<script src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script> <div id="appleid-signin" data-color="black" data-border="true" data-type="sign in"></div> <script> AppleID.auth.init({ clientId: YOUR_APPLE_CLIENT_ID, scope: 'name email', redirectURI: URL_TO_YOUR_REDIRECT_HANDLER, // See the next step. state: '[STATE]', // Optional value that Apple will send back to you // so you can return users to the same context after // they sign in. nonce: HASHED_NONCE // The hashed nonce you generated in the previous step. }); </script>সার্ভার-সাইডে পোস্ট করা যাচাইকরণ উত্তর থেকে Apple ID টোকেন পান:
app.post('/redirect', (req, res) => { const savedState = req.cookies.__session; const code = req.body.code; const state = req.body.state; const appleIdToken = req.body.id_token; if (savedState !== state || !code) { res.status(403).send('403: Permission denied'); } else { // Sign in with Firebase using appleIdToken. (See next step). } });
এছাড়াও, Sign In with Apple-এর জন্য আপনার ওয়েবপেজ কনফিগার করা দেখুন।
ব্যবহারকারীর Apple ID টোকেন পাওয়ার পরে, Credential অবজেক্ট তৈরি করতে এটি ব্যবহার করুন এবং তারপরে ক্রেডেনশিয়াল দিয়ে ব্যবহারকারীকে সাইন-ইন করান:
Web
import { getAuth, signInWithCredential, OAuthProvider } from "firebase/auth"; const auth = getAuth(); // Build Firebase credential with the Apple ID token. const provider = new OAuthProvider('apple.com'); const authCredential = provider.credential({ idToken: appleIdToken, rawNonce: unhashedNonce, }); // Sign in with credential form the Apple user. signInWithCredential(auth, authCredential) .then((result) => { // User signed in. }) .catch((error) => { // An error occurred. If error.code == 'auth/missing-or-invalid-nonce', // make sure you're sending the SHA256-hashed nonce as a hex string // with your request to Apple. console.log(error); });
Web
// Build Firebase credential with the Apple ID token. const provider = new firebase.auth.OAuthProvider('apple.com'); const authCredential = provider.credential({ idToken: appleIdToken, rawNonce: unhashedNonce, }); // Sign in with credential form the Apple user. firebase.auth().signInWithCredential(authCredential) .then((result) => { // User signed in. }) .catch((error) => { // An error occurred. If error.code == 'auth/missing-or-invalid-nonce', // make sure you're sending the SHA256-hashed nonce as a hex string // with your request to Apple. console.log(error); });
পরবর্তী ধাপ
ব্যবহারকারী প্রথমবার সাইন-ইন করার পরে, একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয় এবং ক্রেডেনশিয়ালের সাথে লিঙ্ক করা হয়—অর্থাৎ, ব্যবহারকারীর নাম ও পাসওয়ার্ড, ফোন নম্বর বা প্রমাণীকরণ প্রদানকারীর তথ্য—যেটির মাধ্যমে ব্যবহারকারী সাইন-ইন করেছেন। এই নতুন অ্যাকাউন্ট আপনার Firebase প্রোজেক্টের অংশ হিসেবে স্টোর করা হয় এবং ব্যবহারকারী যেভাবে সাইন-ইন করুন না কেন, আপনার প্রোজেক্টের প্রতিটি অ্যাপ জুড়ে ব্যবহারকারীকে শনাক্ত করতে ব্যবহার করা যেতে পারে।
-
আপনার অ্যাপে, ব্যবহারকারীর অনুমোদনের স্ট্যাটাস জানার জন্য সাজেস্ট করা পদ্ধতি হল,
Authঅবজেক্টে একটি অবজ়ার্ভার সেট করা। আপনি তারপরেUserঅবজেক্ট থেকে ব্যবহারকারীর প্রাথমিক প্রোফাইল সংক্রান্ত তথ্য পেতে পারেন। ব্যবহারকারীদের ম্যানেজ করা দেখুন। আপনার Firebase Realtime Database এবং Cloud Storage নিরাপত্তা বিধিতে, আপনি
authভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারবেন।
আপনি আগে থেকে থাকা ব্যবহারকারীর অ্যাকাউন্টের সাথে অনুমোদন প্রদানকারীর ক্রেডেনশিয়াল লিঙ্ক করে একাধিক অনুমোদন প্রদানকারীর মাধ্যমে আপনার অ্যাপে সাইন-ইন করার জন্য ব্যবহারকারীদের অনুমতি দিতে পারেন।
কোনও ব্যবহারকারীকে সাইন-আউট করতে,
signOut-এ কল করুন:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });