জাভাস্ক্রিপ্ট সহ অ্যাপল ব্যবহার করে প্রমাণীকরণ করুন

আপনি আপনার ব্যবহারকারীদেরকে তাদের অ্যাপল আইডি ব্যবহার করে Firebase SDK ব্যবহার করে এন্ড-টু-এন্ড OAuth 2.0 সাইন-ইন ফ্লো চালানোর অনুমতি দিতে পারেন।

তুমি শুরু করার আগে

অ্যাপল ব্যবহার করে ব্যবহারকারীদের সাইন ইন করতে প্রথমে অ্যাপলের ডেভেলপার সাইটে অ্যাপলের সাথে সাইন ইন কনফিগার করুন, তারপর অ্যাপলকে আপনার ফায়ারবেস প্রকল্পের জন্য একটি সাইন-ইন প্রদানকারী হিসেবে সক্ষম করুন।

অ্যাপল ডেভেলপার প্রোগ্রামে যোগ দিন

সাইন ইন অ্যাপল শুধুমাত্র সদস্য কনফিগার করা যেতে পারে অ্যাপল বিকাশকারী প্রোগ্রাম

অ্যাপলের সাথে সাইন ইন কনফিগার করুন

উপর অ্যাপল ডেভেলপার সাইট, নিচের কাজগুলো করুন:

  1. প্রথম অধ্যায় বর্ণনা অনুযায়ী আপনার অ্যাপ্লিকেশানে আপনার ওয়েবসাইট সা ওয়েবের জন্য কনফিগার সাইন অ্যাপল সঙ্গে সালে । যখন অনুরোধ করা হয়, নিম্নলিখিত URL টি একটি রিটার্ন URL হিসাবে নিবন্ধন করুন:

    https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler

    আপনি আপনার Firebase প্রকল্পের আইডি পেতে পারেন Firebase কনসোল সেটিংস পৃষ্ঠায়

    আপনার কাজ শেষ হয়ে গেলে, আপনার নতুন পরিষেবা আইডি নোট করুন, যা পরবর্তী বিভাগে আপনার প্রয়োজন হবে।

  2. অ্যাপল ব্যক্তিগত কী দিয়ে একটি নিদর্শন তৈরি করুন । পরবর্তী বিভাগে আপনার নতুন ব্যক্তিগত কী এবং কী আইডি লাগবে।
  3. আপনি ইমেইল লিঙ্ক সাইন-ইন, ইমেল ঠিকানা যাচাই, অ্যাকাউন্ট পরিবর্তন প্রত্যাহার, এবং অন্যদের সহ Firebase প্রমাণীকরণ এর বৈশিষ্ট্য ব্যবহারকারীরা আর কোনো ইমেল পাঠাতে, কোন ব্যবহার করেন তাহলে কনফিগার অ্যাপল ব্যক্তিগত ইমেইলের রিলে সেবা এবং নিবন্ধন noreply@ YOUR_FIREBASE_PROJECT_ID .firebaseapp.com (অথবা আপনার কাস্টমাইজড ইমেইল টেমপ্লেট ডোমেইন) যাতে অ্যাপল ফায়ারবেস প্রমাণীকরণ দ্বারা প্রেরিত ইমেলগুলি বেনামী অ্যাপল ইমেল ঠিকানায় রিলে করতে পারে।

অ্যাপলকে সাইন-ইন প্রদানকারী হিসেবে সক্ষম করুন

  1. আপনার প্রকল্পে Firebase যোগ করুন
  2. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন। পদ্ধতি ট্যাবে সাইন অন অ্যাপল প্রদানকারী সক্রিয় করুন। পূর্ববর্তী বিভাগে আপনার তৈরি করা পরিষেবা আইডি উল্লেখ করুন। এছাড়াও, OAuth এর কোড প্রবাহ কনফিগারেশন বিভাগে, আপনার অ্যাপল টিম ID উল্লেখ এবং ব্যক্তিগত কী এবং কী আইডি আপনি আগের বিভাগে সৃষ্টি করেছেন।

অ্যাপল বেনামী ডেটা প্রয়োজনীয়তা মেনে চলুন

এই অপশনটি নির্বাচন সঙ্গে অ্যাপল ব্যবহারকারীদের তাদের ইমেল ঠিকানা সহ সেগুলির ডেটা, anonymizing সাইন ইন করার সময় বিকল্প দেয় সাইন ইন করুন। ব্যবহারকারীরা ডোমেনের সাথে ইমেল ঠিকানা রয়েছে privaterelay.appleid.com । যখন আপনি আপনার অ্যাপে অ্যাপলের সাথে সাইন ইন ব্যবহার করেন, তখন আপনাকে এই বেনামী অ্যাপল আইডি সংক্রান্ত অ্যাপলের কোন প্রযোজ্য বিকাশকারী নীতি বা শর্তাবলী মেনে চলতে হবে।

এর মধ্যে আপনি কোনো পরিচয়হীন অ্যাপল আইডির সঙ্গে সরাসরি পরিচিত কোনো ব্যক্তিগত তথ্য সংযুক্ত করার আগে প্রয়োজনীয় ব্যবহারকারীর সম্মতি পাওয়া অন্তর্ভুক্ত করে। Firebase প্রমাণীকরণ ব্যবহার করার সময়, এতে নিম্নলিখিত ক্রিয়াগুলি অন্তর্ভুক্ত থাকতে পারে:

  • একটি বেনামী অ্যাপল আইডিতে একটি ইমেইল ঠিকানা লিঙ্ক করুন বা বিপরীতভাবে।
  • একটি নাম্বারবিহীন অ্যাপল আইডিতে একটি ফোন নম্বর লিঙ্ক করুন অথবা উল্টো
  • একটি অজ্ঞাতনামা সামাজিক পরিচয়পত্র (ফেসবুক, গুগল, ইত্যাদি) একটি বেনামী অ্যাপল আইডি বা বিপরীতভাবে লিঙ্ক করুন।

উপরের তালিকায় সম্পূর্ণ নয়। আপনার অ্যাপল অ্যাপলের প্রয়োজনীয়তা পূরণ করে তা নিশ্চিত করতে আপনার ডেভেলপার অ্যাকাউন্টের সদস্যপদ বিভাগে অ্যাপল ডেভেলপার প্রোগ্রাম লাইসেন্স চুক্তিটি পড়ুন।

ফায়ারবেস এসডিকে দিয়ে সাইন-ইন প্রবাহ পরিচালনা করুন

আপনি যদি একটি ওয়েব অ্যাপ তৈরি করে থাকেন, তাহলে আপনার ব্যবহারকারীদের তাদের অ্যাপল অ্যাকাউন্ট ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণের সবচেয়ে সহজ উপায় হল ফায়ারবেস জাভাস্ক্রিপ্ট এসডিকে দিয়ে সম্পূর্ণ সাইন-ইন প্রবাহ পরিচালনা করা।

ফায়ারবেস জাভাস্ক্রিপ্ট এসডিকে দিয়ে সাইন-ইন প্রবাহ পরিচালনা করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি OAuthProvider সংশ্লিষ্ট প্রদানকারী আইডি apple.com ব্যবহারের একটি দৃষ্টান্ত তৈরি করুন।

    ওয়েব সংস্করণ 9

    import { OAuthProvider } from "firebase/auth";
    
    const provider = new OAuthProvider('apple.com');

    ওয়েব সংস্করণ 8

    var provider = new firebase.auth.OAuthProvider('apple.com');
  2. ঐচ্ছিক: আপনি প্রমাণীকরণ প্রদানকারীর থেকে অনুরোধ করতে চান ডিফল্ট পরলোক 2.0 সুযোগ উল্লেখ অতিরিক্ত OAuth এর।

    ওয়েব সংস্করণ 9

    provider.addScope('email');
    provider.addScope('name');

    ওয়েব সংস্করণ 8

    provider.addScope('email');
    provider.addScope('name');

    ডিফল্টরূপে, যখন ইমেইল ঠিকানা প্রতি এক অ্যাকাউন্ট সক্ষমিত আছে, Firebase ইমেইল এবং নাম সুযোগ অনুরোধ করেছে। ইমেইল ঠিকানা প্রতি একাধিক অ্যাকাউন্টে এই সেটিংটি পরিবর্তন করলে, Firebase অ্যাপল থেকে কোন সুযোগ যদি না আপনি তাদের উল্লেখ অনুরোধ করে না।

  3. ঐচ্ছিক: আপনি ইংরেজী ছাড়া অন্য একটি ভাষায় অ্যাপলের সাইন-ইন স্ক্রিনে প্রদর্শন করতে চান তাহলে, সেট locale প্যারামিটার। দেখুন সাইন অ্যাপল ডক্সের সঙ্গে সালে সমর্থিত লোকেলের জন্য।

    ওয়েব সংস্করণ 9

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });

    ওয়েব সংস্করণ 8

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });
  4. OAuth প্রদানকারী বস্তু ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন। আপনি আপনার ব্যবহারকারীদের একটি পপ-আপ উইন্ডো খোলার মাধ্যমে অথবা সাইন-ইন পৃষ্ঠায় পুনirectনির্দেশ করে তাদের অ্যাপল অ্যাকাউন্টে সাইন ইন করতে অনুরোধ করতে পারেন। পুনirectনির্দেশ পদ্ধতি মোবাইল ডিভাইসে পছন্দ করা হয়।

    • একটি পপ-আপ উইন্ডো, কল দিয়ে সাইন ইন করতে signInWithPopup() :

      ওয়েব সংস্করণ 9

      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;
      
          // ...
        })
        .catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.email;
          // The credential that was used.
          const credential = OAuthProvider.credentialFromError(error);
      
          // ...
        });

      ওয়েব সংস্করণ 8

      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;
      
          // ...
        })
        .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() :

      ওয়েব সংস্করণ 9

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      ওয়েব সংস্করণ 8

      firebase.auth().signInWithRedirect(provider);

      ব্যবহারকারী সম্পূর্ণ হওয়ার পর সাইন ইন ও পৃষ্ঠা থেকে আপনাকে আয়, আপনি কল করে সাইন-ইন ফলাফল পেতে পারেন getRedirectResult() :

      ওয়েব সংস্করণ 9

      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.email;
          // The credential that was used.
          const credential = OAuthProvider.credentialFromError(error);
      
          // ...
        });

      ওয়েব সংস্করণ 8

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

      এখানেও আপনি ত্রুটিগুলি ধরতে এবং পরিচালনা করতে পারেন। ত্রুটি কোডের একটি তালিকার জন্য, দেখুন এপিআই রেফারেন্স

    Firebase Auth দ্বারা সমর্থিত অন্যান্য প্রদানকারীর বিপরীতে, Apple একটি ছবির URL প্রদান করে না।

    এছাড়াও, ব্যবহারকারী অ্যাপ্লিকেশন, সেই ব্যবহারকারীর (ফর্ম এর জন্য অ্যাপল বিধান একটি অনন্য ইমেল ঠিকানা দিয়ে তাদের ইমেল ভাগ করতে বেছে যখন xyz@privaterelay.appleid.com , যা এটি আপনার অ্যাপের সঙ্গে শেয়ার)। যদি আপনি ব্যক্তিগত ইমেইল রিলে পরিষেবা কনফিগার করেন, অ্যাপল ব্যবহারকারীর আসল ইমেল ঠিকানায় বেনামী ঠিকানায় পাঠানো ইমেল ফরওয়ার্ড করে।

    অ্যাপল শুধুমাত্র শেয়ার ব্যবহারকারীর তথ্য যেমন প্রথমবার অ্যাপ্লিকেশনগুলির সাথে প্রদর্শন নামে একটি ব্যবহারকারী লক্ষণ। সাধারণত, Firebase দোকানে প্রদর্শন নাম প্রথমবার অ্যাপল দিয়ে একটি ব্যবহারকারী চিহ্ন, আপনার সাথে পেতে পারেন firebase.auth().currentUser.displayName । যাইহোক, যদি আপনি আগে ফায়ারবেস ব্যবহার না করে অ্যাপে ব্যবহারকারীকে সাইন ইন করতে অ্যাপল ব্যবহার করেন, তাহলে অ্যাপল ব্যবহারকারীর ডিসপ্লে নেম সহ ফায়ারবেস প্রদান করবে না।

পুনরায় প্রমাণীকরণ এবং অ্যাকাউন্ট লিঙ্কিং

একই প্যাটার্ন ব্যবহার করা যেতে পারে reauthenticateWithPopup() এবং reauthenticateWithRedirect() , যা আপনি সংবেদনশীল অপারেশন সাম্প্রতিক সাইন-ইন দরকার জন্য একটি তাজা ক্রেডেনশিয়াল পুনরুদ্ধার করতে ব্যবহার করতে পারেন:

ওয়েব সংস্করণ 9

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.email;
    // The credential that was used.
    const credential = OAuthProvider.credentialFromError(error);

    // ...
  });

ওয়েব সংস্করণ 8

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;

    // ...
  })
  .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() , বিদ্যমান অ্যাকাউন্টে বিভিন্ন পরিচিতি প্রদানকারীদের লিঙ্ক করতে।

মনে রাখবেন যে অ্যাপল ব্যবহারকারীদের তাদের অ্যাপল অ্যাকাউন্টগুলিকে অন্যান্য ডেটার সাথে লিঙ্ক করার আগে তাদের স্পষ্ট অনুমতি নিতে হবে।

উদাহরণস্বরূপ, বর্তমান ফায়ারবেস অ্যাকাউন্টের সাথে একটি ফেসবুক অ্যাকাউন্ট লিঙ্ক করতে, ব্যবহারকারীকে ফেসবুকে সাইন ইন করার সময় আপনি যে অ্যাক্সেস টোকেন পেয়েছেন তা ব্যবহার করুন:

ওয়েব সংস্করণ 9

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

ওয়েব সংস্করণ 8

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 দিয়ে প্রমাণীকরণ করুন

আপনি যদি একটি ক্রোম এক্সটেনশন অ্যাপ তৈরি করেন, তাহলে আপনাকে অবশ্যই আপনার ক্রোম এক্সটেনশন আইডি যোগ করতে হবে:

  1. আপনার প্রকল্প খুলুন Firebase কনসোল
  2. প্রমাণীকরণ বিভাগে, সাইন-ইন পদ্ধতি পৃষ্ঠা খুলুন।
  3. : একটি কোনো URI অনুমোদিত ডোমেন তালিকায় নিচের মত যোগ
    chrome-extension://CHROME_EXTENSION_ID

শুধু পপআপ কার্যকলাপ ( signInWithPopup , linkWithPopup এবং reauthenticateWithPopup হিসাবে Chrome এক্সটেনশানগুলি HTTP- র পুনঃনির্দেশ ব্যবহার করতে পারবেন না), ক্রোম এক্সটেনশন পাওয়া যায়। ব্রাউজার অ্যাকশন পপআপের পরিবর্তে আপনার এই পদ্ধতিগুলিকে ব্যাকগ্রাউন্ড পৃষ্ঠা স্ক্রিপ্ট থেকে কল করা উচিত, কারণ প্রমাণীকরণ পপআপ ব্রাউজার অ্যাকশন পপআপ বাতিল করবে। পপআপ পদ্ধতি শুধুমাত্র ব্যবহার এক্সটেনশন ব্যবহার করা যেতে পারে ম্যানিফেস্ট থেকে V2 । নতুন ম্যানিফেস্ট V3 কেবল পরিষেবা শ্রমিকদের ফর্ম, যা সব সময়ে পপআপ অপারেশন সঞ্চালন করা সম্ভব নয় মধ্যে পটভূমি চিত্রনাট্যের পারেন।

আপনার Chrome এক্সটেনশন ম্যানিফেস্টে ফাইল বানান আপনি যোগ নিশ্চিত করুন যে https://apis.google.com করতে URL content_security_policy allowlist।

মনে রাখবেন যে আপনাকে এখনও অ্যাপলের সাথে কাস্টম ডোমেইন যাচাই করতে হবে ডিফল্ট firebaseapp.com ডোমেনের মতো:

http://auth.custom.example.com/.well-known/apple-developer-domain-association.txt

উন্নত: Node.js এ Firebase দিয়ে প্রমাণীকরণ করুন

একটি Node.js অ্যাপ্লিকেশনে Firebase দিয়ে প্রমাণীকরণ করতে:

  1. ব্যবহারকারীর অ্যাপল অ্যাকাউন্ট দিয়ে সাইন ইন করুন এবং ব্যবহারকারীর অ্যাপল আইডি টোকেন পান। আপনি এটি বিভিন্ন উপায়ে সম্পন্ন করতে পারেন। উদাহরণস্বরূপ, যদি আপনার Node.js অ্যাপের একটি ব্রাউজার ফ্রন্ট এন্ড থাকে:

    1. আপনার ব্যাকএন্ডে, একটি এলোমেলো স্ট্রিং (একটি "nonce") তৈরি করুন এবং এর SHA256 হ্যাশ গণনা করুন। আপনার ব্যাকএন্ড এবং অ্যাপলের অথ সার্ভারগুলির মধ্যে একক রাউন্ড ট্রিপ যাচাই করার জন্য ননস একটি এককালীন ব্যবহার মূল্য।

      ওয়েব সংস্করণ 9

      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.substr(0, length);
      };
      
      const unhashedNonce = generateNonce(10);
      
      // SHA256-hashed nonce in hex
      const hashedNonceHex = crypto.createHash('sha256')
        .update(unhashedNonce).digest().toString('hex');

      ওয়েব সংস্করণ 8

      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.substr(0, length);
      };
      
      const unhashedNonce = generateNonce(10);
      
      // SHA256-hashed nonce in hex
      const hashedNonceHex = crypto.createHash('sha256')
        .update(unhashedNonce).digest().toString('hex');
    2. আপনার সাইন-ইন পৃষ্ঠায়, অ্যাপল কনফিগারেশন সহ আপনার সাইন ইন-এ হ্যাশড ননস উল্লেখ করুন:

      <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>
      
    3. POSTed auth response server-side থেকে 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).
        }
      });
      

    আরো দেখুন সাইন ইন করার জন্য আপনার ওয়েব পেজ কনফিগার অ্যাপল সঙ্গে সালে

  2. আপনি ব্যবহারকারীর অ্যাপল আইডি টোকেন পাওয়ার পরে, এটি একটি ক্রেডেনশিয়াল বস্তু তৈরি করতে ব্যবহার করুন এবং তারপরে ব্যবহারকারীকে শংসাপত্র দিয়ে সাইন ইন করুন:

    ওয়েব সংস্করণ 9

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

    ওয়েব সংস্করণ 8

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

পরবর্তী পদক্ষেপ

একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পর, একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয় এবং শংসাপত্রের সাথে সংযুক্ত করা হয় - অর্থাৎ ব্যবহারকারীর নাম এবং পাসওয়ার্ড, ফোন নম্বর, বা স্বাক্ষর প্রদানকারীর তথ্য — ব্যবহারকারী সাইন ইন করেছেন। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং ব্যবহারকারী যেভাবে সাইন ইন করুক না কেন আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে ব্যবহারকারীকে চিহ্নিত করতে ব্যবহার করা যেতে পারে।

  • আপনার অ্যাপ্লিকেশান ক্ষেত্রে, আপনার ব্যবহারকারীর প্রমাণীকরণ অবস্থা জানতে প্রস্তাবিত উপায় উপর একটি পর্যবেক্ষক সেট করতে হয় Auth অবজেক্ট। এর পরে আপনি থেকে ব্যবহারকারীর সাধারণ প্রোফাইল তথ্য পেতে পারেন User বস্তু। দেখুন ব্যবহারকারীদের পরিচালনা

  • আপনার Firebase রিয়েলটাইম ডাটাবেস এবং ক্লাউড স্টোরেজ সিকিউরিটি রুলস , আপনি পেতে পারেন সাইন ইন থেকে ব্যবহারকারী এর অনন্য ব্যবহারকারী আইডি auth পরিবর্তনশীল, এবং এটি ব্যবহার কোন ডেটা একটি ব্যবহারকারী অ্যাক্সেস করতে পারবেন নিয়ন্ত্রন করতে পারেন।

আপনি ব্যবহারকারীদের দ্বারা একাধিক প্রমাণীকরণ প্রদানকারীর ব্যবহার করে আপনার অ্যাপ্লিকেশানে সাইন ইন করার অনুমতি দিতে পারেন একটি বিদ্যমান ব্যবহারকারীর অ্যাকাউন্টের সাথে প্রমাণীকরণ প্রদানকারী পরিচয়পত্র লিঙ্ক।

একটি ব্যবহারকারী সাইন আউট করতে, কল signOut :

ওয়েব সংস্করণ 9

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

ওয়েব সংস্করণ 8

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});