সম্পূর্ণ সাইন-ইন প্রক্রিয়াটি সম্পন্ন করার জন্য, আপনি আপনার অ্যাপে Firebase SDK ব্যবহার করে জেনেরিক OAuth লগইন ইন্টিগ্রেট করার মাধ্যমে Yahoo-এর মতো OAuth প্রোভাইডারদের দিয়ে Firebase-এ ব্যবহারকারীদের প্রমাণীকরণের সুযোগ দিতে পারেন।
শুরু করার আগে
Yahoo অ্যাকাউন্ট ব্যবহার করে ব্যবহারকারীদের সাইন ইন করাতে হলে, আপনাকে প্রথমে আপনার Firebase প্রোজেক্টের জন্য Yahoo-কে একটি সাইন-ইন প্রদানকারী হিসেবে সক্রিয় করতে হবে:
- আপনার অ্যাপল প্রজেক্টে ফায়ারবেস যোগ করুন ।
- Firebase কনসোলে, Security > Authentication- এ যান।
- সাইন-ইন পদ্ধতি ট্যাবে, Yahoo সাইন-ইন প্রদানকারীকে সক্রিয় করুন।
- সেই প্রোভাইডারের ডেভেলপার কনসোল থেকে ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট প্রোভাইডার কনফিগারেশনে যোগ করুন:
একটি Yahoo OAuth ক্লায়েন্ট নিবন্ধন করতে, Yahoo-এর সাথে একটি ওয়েব অ্যাপ্লিকেশন নিবন্ধন করার বিষয়ে Yahoo ডেভেলপার ডকুমেন্টেশন অনুসরণ করুন।
অবশ্যই দুটি OpenID Connect API পারমিশন—
profileএবংemailনির্বাচন করুন।- এই প্রোভাইডারদের কাছে অ্যাপ নিবন্ধন করার সময়, আপনার অ্যাপের রিডাইরেক্ট ডোমেইন হিসেবে আপনার প্রোজেক্টের জন্য
*.firebaseapp.comডোমেইনটি নিবন্ধন করতে ভুলবেন না।
- সংরক্ষণ করুন- এ ক্লিক করুন।
Firebase SDK দিয়ে সাইন-ইন প্রক্রিয়াটি পরিচালনা করুন।
Firebase Apple প্ল্যাটফর্ম SDK ব্যবহার করে সাইন-ইন প্রক্রিয়াটি পরিচালনা করতে, এই ধাপগুলো অনুসরণ করুন:
আপনার Xcode প্রোজেক্টে কাস্টম URL স্কিম যোগ করুন:
- আপনার প্রোজেক্ট কনফিগারেশন খুলুন: বাম দিকের ট্রি ভিউতে প্রোজেক্টের নামের উপর ডাবল-ক্লিক করুন। TARGETS সেকশন থেকে আপনার অ্যাপটি নির্বাচন করুন, তারপর Info ট্যাবটি নির্বাচন করুন এবং URL Types সেকশনটি এক্সপ্যান্ড করুন।
- + বোতামে ক্লিক করুন এবং আপনার এনকোডেড অ্যাপ আইডিটি ইউআরএল স্কিম হিসেবে যোগ করুন। অন্যান্য ক্ষেত্রগুলো খালি রাখুন।
আপনি আপনার এনকোডেড অ্যাপ আইডি Firebase কনসোলে খুঁজে পেতে পারেন: এখানে যান
> সাধারণ ট্যাবে যান , তারপর আপনার iOS অ্যাপের বিবরণ দেখতে ' আপনার অ্যাপস' বিভাগ পর্যন্ত স্ক্রোল করুন। সম্পূর্ণ হলে, আপনার কনফিগারেশনটি নিচের মতো দেখতে হবে (তবে এতে আপনার অ্যাপ্লিকেশনের জন্য নির্দিষ্ট মানগুলো থাকবে):

প্রোভাইডার আইডি yahoo.com ব্যবহার করে একটি OAuthProvider- এর ইনস্ট্যান্স তৈরি করুন।
সুইফট
var provider = OAuthProvider(providerID: "yahoo.com")
উদ্দেশ্য-সি
FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"yahoo.com"];
ঐচ্ছিক : 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 ।ঐচ্ছিক :
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 স্কোপস ডকুমেন্টেশন দেখুন।
ঐচ্ছিক : ব্যবহারকারীকে reCAPTCHA দেখানোর সময় আপনার অ্যাপ যেভাবে
SFSafariViewControllerবাUIWebViewউপস্থাপন করে, তা যদি আপনি কাস্টমাইজ করতে চান, তাহলেAuthUIDelegateপ্রোটোকল মেনে চলে এমন একটি কাস্টম ক্লাস তৈরি করুন এবং সেটিcredentialWithUIDelegateএ পাস করুন।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থেকে পাওয়া যেতে পারে।যদিও উপরের উদাহরণগুলো সাইন-ইন প্রক্রিয়ার উপর আলোকপাত করে, আপনার কাছে
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 }];
একই প্যাটার্ন
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; }
আপনি সব ধরনের প্রমাণীকরণ ত্রুটির জন্য ত্রুটি পরিচালনা কোডও যোগ করতে চাইতে পারেন। ত্রুটি পরিচালনা দেখুন।