Apple প্ল্যাটফর্মে Yahoo ব্যবহার করে প্রমাণীকরণ করুন

সম্পূর্ণ সাইন-ইন প্রক্রিয়াটি সম্পন্ন করার জন্য, আপনি আপনার অ্যাপে Firebase SDK ব্যবহার করে জেনেরিক OAuth লগইন ইন্টিগ্রেট করার মাধ্যমে Yahoo-এর মতো OAuth প্রোভাইডারদের দিয়ে Firebase-এ ব্যবহারকারীদের প্রমাণীকরণের সুযোগ দিতে পারেন।

শুরু করার আগে

Yahoo অ্যাকাউন্ট ব্যবহার করে ব্যবহারকারীদের সাইন ইন করাতে হলে, আপনাকে প্রথমে আপনার Firebase প্রোজেক্টের জন্য Yahoo-কে একটি সাইন-ইন প্রদানকারী হিসেবে সক্রিয় করতে হবে:

  1. আপনার অ্যাপল প্রজেক্টে ফায়ারবেস যোগ করুন
  2. Firebase কনসোলে, Security > Authentication- এ যান।
  3. সাইন-ইন পদ্ধতি ট্যাবে, Yahoo সাইন-ইন প্রদানকারীকে সক্রিয় করুন।
  4. সেই প্রোভাইডারের ডেভেলপার কনসোল থেকে ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট প্রোভাইডার কনফিগারেশনে যোগ করুন:
    1. একটি Yahoo OAuth ক্লায়েন্ট নিবন্ধন করতে, Yahoo-এর সাথে একটি ওয়েব অ্যাপ্লিকেশন নিবন্ধন করার বিষয়ে Yahoo ডেভেলপার ডকুমেন্টেশন অনুসরণ করুন।

      অবশ্যই দুটি OpenID Connect API পারমিশন— profile এবং email নির্বাচন করুন।

    2. এই প্রোভাইডারদের কাছে অ্যাপ নিবন্ধন করার সময়, আপনার অ্যাপের রিডাইরেক্ট ডোমেইন হিসেবে আপনার প্রোজেক্টের জন্য *.firebaseapp.com ডোমেইনটি নিবন্ধন করতে ভুলবেন না।
  5. সংরক্ষণ করুন- এ ক্লিক করুন।

Firebase SDK দিয়ে সাইন-ইন প্রক্রিয়াটি পরিচালনা করুন।

Firebase Apple প্ল্যাটফর্ম SDK ব্যবহার করে সাইন-ইন প্রক্রিয়াটি পরিচালনা করতে, এই ধাপগুলো অনুসরণ করুন:

  1. আপনার Xcode প্রোজেক্টে কাস্টম URL স্কিম যোগ করুন:

    1. আপনার প্রোজেক্ট কনফিগারেশন খুলুন: বাম দিকের ট্রি ভিউতে প্রোজেক্টের নামের উপর ডাবল-ক্লিক করুন। TARGETS সেকশন থেকে আপনার অ্যাপটি নির্বাচন করুন, তারপর Info ট্যাবটি নির্বাচন করুন এবং URL Types সেকশনটি এক্সপ্যান্ড করুন।
    2. + বোতামে ক্লিক করুন এবং আপনার এনকোডেড অ্যাপ আইডিটি ইউআরএল স্কিম হিসেবে যোগ করুন। অন্যান্য ক্ষেত্রগুলো খালি রাখুন।

      আপনি আপনার এনকোডেড অ্যাপ আইডি Firebase কনসোলে খুঁজে পেতে পারেন: এখানে যান > সাধারণ ট্যাবে যান , তারপর আপনার iOS অ্যাপের বিবরণ দেখতে ' আপনার অ্যাপস' বিভাগ পর্যন্ত স্ক্রোল করুন।

      সম্পূর্ণ হলে, আপনার কনফিগারেশনটি নিচের মতো দেখতে হবে (তবে এতে আপনার অ্যাপ্লিকেশনের জন্য নির্দিষ্ট মানগুলো থাকবে):

      এক্সকোডের কাস্টম ইউআরএল স্কিম সেটআপ ইন্টারফেসের স্ক্রিনশট

  2. প্রোভাইডার আইডি yahoo.com ব্যবহার করে একটি OAuthProvider- এর ইনস্ট্যান্স তৈরি করুন।

    সুইফট

    var provider = OAuthProvider(providerID: "yahoo.com")
        

    উদ্দেশ্য-সি

    FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"yahoo.com"];
        
  3. ঐচ্ছিক : OAuth অনুরোধের সাথে আপনি যে অতিরিক্ত কাস্টম OAuth প্যারামিটারগুলো পাঠাতে চান, তা নির্দিষ্ট করুন।

    সুইফট

    provider.customParameters = [
    "prompt": "login",
    "language": "fr"
    ]
        

    উদ্দেশ্য-সি

    [provider setCustomParameters:@{@"prompt": @"login", @"language": @"fr"}];
        

    Yahoo যে প্যারামিটারগুলো সমর্থন করে, সেগুলোর জন্য Yahoo OAuth ডকুমেন্টেশন দেখুন। মনে রাখবেন যে, আপনি setCustomParameters এর মাধ্যমে Firebase-এর প্রয়োজনীয় প্যারামিটারগুলো পাস করতে পারবেন না। এই প্যারামিটারগুলো হলো client_id , redirect_uri , response_type , scope এবং state

  4. ঐচ্ছিক : profile এবং email ছাড়াও অতিরিক্ত OAuth 2.0 স্কোপ উল্লেখ করুন যা আপনি অথেনটিকেশন প্রোভাইডারের কাছ থেকে অনুরোধ করতে চান। যদি আপনার অ্যাপ্লিকেশনের Yahoo API থেকে ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেসের প্রয়োজন হয়, তাহলে আপনাকে Yahoo ডেভেলপার কনসোলের 'API Permissions'- এর অধীনে Yahoo API-এর জন্য অনুমতি অনুরোধ করতে হবে। অনুরোধ করা OAuth স্কোপগুলো অবশ্যই অ্যাপের API পারমিশনে আগে থেকে কনফিগার করা স্কোপগুলোর সাথে হুবহু মিলতে হবে। উদাহরণস্বরূপ, যদি ব্যবহারকারীর কন্টাক্টে রিড/রাইট অ্যাক্সেস অনুরোধ করা হয় এবং তা অ্যাপের API পারমিশনে আগে থেকে কনফিগার করা থাকে, তাহলে রিড-অনলি OAuth স্কোপ sdct-r এর পরিবর্তে sdct-w পাস করতে হবে। অন্যথায়, প্রক্রিয়াটি ব্যর্থ হবে এবং ব্যবহারকারীকে একটি ত্রুটি দেখানো হবে।

    সুইফট

    // Request access to Yahoo Mail API.
    // Request read/write access to user contacts.
    // This must be preconfigured in the app's API permissions.
    provider.scopes = ["mail-r", "sdct-w"]
        

    উদ্দেশ্য-সি

    // Request access to Yahoo Mail API.
    // Request read/write access to user contacts.
    // This must be preconfigured in the app's API permissions.
    [provider setScopes:@[@"mail-r", @"sdct-w"]];
        

    আরও জানতে, Yahoo স্কোপস ডকুমেন্টেশন দেখুন।

  5. ঐচ্ছিক : ব্যবহারকারীকে reCAPTCHA দেখানোর সময় আপনার অ্যাপ যেভাবে SFSafariViewController বা UIWebView উপস্থাপন করে, তা যদি আপনি কাস্টমাইজ করতে চান, তাহলে AuthUIDelegate প্রোটোকল মেনে চলে এমন একটি কাস্টম ক্লাস তৈরি করুন এবং সেটি credentialWithUIDelegate এ পাস করুন।

  6. OAuth প্রোভাইডার অবজেক্ট ব্যবহার করে Firebase-এর সাথে প্রমাণীকরণ করুন।

    সুইফট

    provider.getCredentialWith(nil) { credential, error in
    if error != nil {
    // Handle error.
    }
    if credential != nil {
    Auth().signIn(with: credential) { authResult, error in
      if error != nil {
        // Handle error.
      }
      // User is signed in.
      // IdP data available in authResult.additionalUserInfo.profile.
      // Yahoo OAuth access token can also be retrieved by:
      // (authResult.credential as? OAuthCredential)?.accessToken
      // Yahoo OAuth ID token can be retrieved by calling:
      // (authResult.credential as? OAuthCredential)?.idToken
    }
    }
    }
        

    উদ্দেশ্য-সি

    [provider getCredentialWithUIDelegate:nil
                           completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) {
    if (error) {
    // Handle error.
    }
    if (credential) {
    [[FIRAuth auth] signInWithCredential:credential
                              completion:^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) {
      if (error) {
        // Handle error.
      }
      // User is signed in.
      // IdP data available in authResult.additionalUserInfo.profile.
      // Yahoo OAuth access token can also be retrieved by:
      // ((FIROAuthCredential *)authResult.credential).accessToken
      // Yahoo OAuth ID token can be retrieved by calling:
      // ((FIROAuthCredential *)authResult.credential).idToken
    }];
    }
    }];
        

    OAuth অ্যাক্সেস টোকেন ব্যবহার করে আপনি Yahoo API কল করতে পারেন।

    উদাহরণস্বরূপ, প্রোফাইলের প্রাথমিক তথ্য পেতে, আপনি Authorization হেডারে অ্যাক্সেস টোকেনটি পাস করে REST API কল করতে পারেন:

    https://social.yahooapis.com/v1/user/YAHOO_USER_UID/profile?format=json

    যেখানে YAHOO_USER_UID হল Yahoo ব্যবহারকারীর আইডি যা Auth.auth.currentUser.providerData[0].uid ফিল্ড থেকে অথবা authResult.additionalUserInfo.profile থেকে পাওয়া যেতে পারে।

  7. যদিও উপরের উদাহরণগুলো সাইন-ইন প্রক্রিয়ার উপর আলোকপাত করে, আপনার কাছে linkWithPopup ব্যবহার করে একজন বিদ্যমান ব্যবহারকারীর সাথে একটি Yahoo প্রোভাইডার লিঙ্ক করার ক্ষমতাও রয়েছে। উদাহরণস্বরূপ, আপনি একই ব্যবহারকারীর সাথে একাধিক প্রোভাইডার লিঙ্ক করতে পারেন, যাতে তারা যেকোনো একটি দিয়ে সাইন ইন করতে পারে।

    সুইফট

    Auth().currentUser.link(withCredential: credential) { authResult, error in
    if error != nil {
    // Handle error.
    }
    // Yahoo credential is linked to the current user.
    // IdP data available in authResult.additionalUserInfo.profile.
    // Yahoo OAuth access token can also be retrieved by:
    // (authResult.credential as? OAuthCredential)?.accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // (authResult.credential as? OAuthCredential)?.idToken
    }
        

    উদ্দেশ্য-সি

    [[FIRAuth auth].currentUser
    linkWithCredential:credential
            completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
    if (error) {
    // Handle error.
    }
    // Yahoo credential is linked to the current user.
    // IdP data available in authResult.additionalUserInfo.profile.
    // Yahoo OAuth access token is can also be retrieved by:
    // ((FIROAuthCredential *)authResult.credential).accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // ((FIROAuthCredential *)authResult.credential).idToken
    }];
        
  8. একই প্যাটার্ন reauthenticateWithPopup / reauthenticateWithRedirect সাথেও ব্যবহার করা যেতে পারে, যা সাম্প্রতিক লগইন প্রয়োজন এমন সংবেদনশীল অপারেশনের জন্য নতুন ক্রেডেনশিয়াল পুনরুদ্ধার করতে কাজে লাগে।

    সুইফট

    Auth().currentUser.reauthenticateWithCredential(withCredential: credential) { authResult, error in
    if error != nil {
    // Handle error.
    }
    // User is re-authenticated with fresh tokens minted and
    // should be able to perform sensitive operations like account
    // deletion and email or password update.
    // IdP data available in result.additionalUserInfo.profile.
    // Additional OAuth access token is can also be retrieved by:
    // (authResult.credential as? OAuthCredential)?.accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // (authResult.credential as? OAuthCredential)?.idToken
    }
        

    উদ্দেশ্য-সি

    [[FIRAuth auth].currentUser
    reauthenticateWithCredential:credential
                      completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
    if (error) {
    // Handle error.
    }
    // User is re-authenticated with fresh tokens minted and
    // should be able to perform sensitive operations like account
    // deletion and email or password update.
    // IdP data available in result.additionalUserInfo.profile.
    // Additional OAuth access token is can also be retrieved by:
    // ((FIROAuthCredential *)authResult.credential).accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // ((FIROAuthCredential *)authResult.credential).idToken
    }];
        

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

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

  • আপনার অ্যাপে, আপনি User অবজেক্ট থেকে ব্যবহারকারীর প্রাথমিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারী ব্যবস্থাপনা (Manage Users) দেখুন।

  • আপনার Firebase Realtime Database and Cloud Storage Security Rules- এ, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ইউজার আইডি পেতে পারেন এবং একজন ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

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

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

সুইফট

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}

উদ্দেশ্য-সি

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

আপনি সব ধরনের প্রমাণীকরণ ত্রুটির জন্য ত্রুটি পরিচালনা কোডও যোগ করতে চাইতে পারেন। ত্রুটি পরিচালনা দেখুন।