আপনি Firebase প্রমাণীকরণ ব্যবহার করে একটি ব্যবহারকারীকে একটি লিঙ্ক সহ একটি ইমেল পাঠিয়ে সাইন ইন করতে পারেন, যেটিতে ক্লিক করে তারা সাইন ইন করতে পারে৷ প্রক্রিয়ায়, ব্যবহারকারীর ইমেল ঠিকানাও যাচাই করা হয়৷
ইমেলের মাধ্যমে সাইন ইন করার অনেক সুবিধা রয়েছে:
- কম ঘর্ষণ সাইন আপ এবং সাইন ইন.
- অ্যাপ্লিকেশানগুলিতে পাসওয়ার্ড পুনঃব্যবহারের কম ঝুঁকি, যা এমনকি ভাল-নির্বাচিত পাসওয়ার্ডগুলির নিরাপত্তাকে দুর্বল করতে পারে।
- একজন ব্যবহারকারীকে প্রমাণীকরণ করার ক্ষমতাও যাচাই করে যে ব্যবহারকারী একটি ইমেল ঠিকানার বৈধ মালিক।
- সাইন ইন করার জন্য একজন ব্যবহারকারীর শুধুমাত্র একটি অ্যাক্সেসযোগ্য ইমেল অ্যাকাউন্টের প্রয়োজন হয়৷ কোনও ফোন নম্বর বা সোশ্যাল মিডিয়া অ্যাকাউন্টের মালিকানার প্রয়োজন নেই৷
- একজন ব্যবহারকারী একটি পাসওয়ার্ড প্রদান (বা মনে রাখার) প্রয়োজন ছাড়াই নিরাপদে সাইন ইন করতে পারেন, যা একটি মোবাইল ডিভাইসে কষ্টকর হতে পারে।
- একটি বিদ্যমান ব্যবহারকারী যিনি পূর্বে একটি ইমেল শনাক্তকারী (পাসওয়ার্ড বা ফেডারেটেড) দিয়ে সাইন ইন করেছিলেন শুধুমাত্র ইমেল দিয়ে সাইন ইন করতে আপগ্রেড করা যেতে পারে৷ উদাহরণ স্বরূপ, যে ব্যবহারকারী তাদের পাসওয়ার্ড ভুলে গেছেন তারা তাদের পাসওয়ার্ড রিসেট না করেই সাইন ইন করতে পারবেন।
আপনি শুরু করার আগে
ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
- Xcode-এ, আপনার অ্যাপ প্রকল্প খোলার সাথে, ফাইল > প্যাকেজ যোগ করুন- এ নেভিগেট করুন।
- অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK সংগ্রহস্থল যোগ করুন:
- Firebase Authentication লাইব্রেরি বেছে নিন।
- আপনার লক্ষ্যের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে
-ObjC
পতাকা যোগ করুন। - শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে পটভূমিতে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
https://github.com/firebase/firebase-ios-sdk.git
আপনার Firebase প্রকল্পের জন্য ইমেল লিঙ্ক সাইন-ইন সক্ষম করুন
ইমেল লিঙ্ক দ্বারা ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার Firebase প্রকল্পের জন্য ইমেল প্রদানকারী এবং ইমেল লিঙ্ক সাইন-ইন পদ্ধতি সক্ষম করতে হবে:
- Firebase কনসোলে , Auth বিভাগটি খুলুন।
- সাইন ইন পদ্ধতি ট্যাবে, ইমেল/পাসওয়ার্ড প্রদানকারী সক্ষম করুন। নোট করুন যে ইমেল লিঙ্ক সাইন-ইন ব্যবহার করার জন্য ইমেল/পাসওয়ার্ড সাইন-ইন অবশ্যই সক্রিয় থাকতে হবে।
- একই বিভাগে, ইমেল লিঙ্ক (পাসওয়ার্ডবিহীন সাইন-ইন) সাইন-ইন পদ্ধতি সক্ষম করুন।
- Save এ ক্লিক করুন।
ব্যবহারকারীর ইমেল ঠিকানায় একটি প্রমাণীকরণ লিঙ্ক পাঠান
প্রমাণীকরণ প্রবাহ শুরু করতে, ব্যবহারকারীকে একটি ইন্টারফেসের সাথে উপস্থাপন করুন যা ব্যবহারকারীকে তাদের ইমেল ঠিকানা প্রদান করতে অনুরোধ করে এবং তারপরে sendSignInLink
কল করুন যাতে Firebase ব্যবহারকারীর ইমেলে প্রমাণীকরণ লিঙ্কটি পাঠায়।
ActionCodeSettings
অবজেক্ট তৈরি করুন, যা Firebase-কে ইমেল লিঙ্ক কীভাবে তৈরি করতে হয় তার নির্দেশাবলী প্রদান করে। নিম্নলিখিত ক্ষেত্র সেট করুন:-
url
: এম্বেড করার গভীর লিঙ্ক এবং যেকোন অতিরিক্ত অবস্থা পাস করতে হবে। লিঙ্কের ডোমেনটিকে অনুমোদিত ডোমেনের Firebase কনসোলের তালিকায় সাদা তালিকাভুক্ত করতে হবে, যা সাইন-ইন পদ্ধতি ট্যাবে গিয়ে (প্রমাণিকরণ -> সাইন-ইন পদ্ধতি) পাওয়া যাবে। -
iOSBundleID
এবংandroidPackageName
: Firebase Authentication এটি নির্ধারণ করতে সাহায্য করে যে এটি একটি শুধুমাত্র-ওয়েব বা মোবাইল লিঙ্ক তৈরি করবে যা একটি Android বা Apple ডিভাইসে খোলা হবে। -
handleCodeInApp
: সত্যে সেট করুন। সাইন-ইন অপারেশনটি সর্বদা অ্যাপে সম্পূর্ণ করতে হবে অন্যান্য ব্যান্ড ইমেল অ্যাকশনের বিপরীতে (পাসওয়ার্ড রিসেট এবং ইমেল যাচাইকরণ)। এর কারণ হল, প্রবাহের শেষে, ব্যবহারকারী সাইন ইন করবেন বলে আশা করা হচ্ছে এবং অ্যাপের মধ্যে তাদের প্রমাণীকরণ স্থিতি বজায় থাকবে। -
linkDomain
: যখন একটি প্রকল্পের জন্য কাস্টম Hosting লিঙ্ক ডোমেনগুলি সংজ্ঞায়িত করা হয়, নির্দিষ্ট মোবাইল অ্যাপ দ্বারা লিঙ্কটি খোলার সময় কোনটি ব্যবহার করতে হবে তা নির্দিষ্ট করুন৷ অন্যথায় ডিফল্ট ডোমেন স্বয়ংক্রিয়ভাবে নির্বাচিত হয় (উদাহরণস্বরূপ,PROJECT_ID .firebaseapp.com
)। dynamicLinkDomain
: অবচয়। এই প্যারামিটার নির্দিষ্ট করবেন না।
let actionCodeSettings = ActionCodeSettings() actionCodeSettings.url = URL(string: "https://www.example.com") // The sign-in operation has to always be completed in the app. actionCodeSettings.handleCodeInApp = true actionCodeSettings.setIOSBundleID(Bundle.main.bundleIdentifier!) actionCodeSettings.setAndroidPackageName("com.example.android", installIfNotAvailable: false, minimumVersion: "12")
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init]; [actionCodeSettings setURL:[NSURL URLWithString:@"https://www.example.com"]]; // The sign-in operation has to always be completed in the app. actionCodeSettings.handleCodeInApp = YES; [actionCodeSettings setIOSBundleID:[[NSBundle mainBundle] bundleIdentifier]]; [actionCodeSettings setAndroidPackageName:@"com.example.android" installIfNotAvailable:NO minimumVersion:@"12"];
ActionCodeSettings
সম্পর্কে আরও জানতে, ইমেল অ্যাকশন বিভাগে পাসিং স্টেট পড়ুন।-
ব্যবহারকারীকে তাদের ইমেলের জন্য জিজ্ঞাসা করুন। ব্যবহারকারীর ইমেলে প্রমাণীকরণ লিঙ্কটি পাঠান এবং ব্যবহারকারীর ইমেলটি সংরক্ষণ করুন যদি ব্যবহারকারী একই ডিভাইসে ইমেল সাইন-ইন সম্পূর্ণ করেন। Auth.auth().sendSignInLink(toEmail: email, actionCodeSettings: actionCodeSettings) { error in // ... if let error = error { self.showMessagePrompt(error.localizedDescription) return } // The link was successfully sent. Inform the user. // Save the email locally so you don't need to ask the user for it again // if they open the link on the same device. UserDefaults.standard.set(email, forKey: "Email") self.showMessagePrompt("Check your email for link") // ... }
[[FIRAuth auth] sendSignInLinkToEmail:email actionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { // ... if (error) { [self showMessagePrompt:error.localizedDescription]; return; } // The link was successfully sent. Inform the user. // Save the email locally so you don't need to ask the user for it again // if they open the link on the same device. [NSUserDefaults.standardUserDefaults setObject:email forKey:@"Email"]; [self showMessagePrompt:@"Check your email for link"]; // ... }];
ইমেল লিঙ্ক দিয়ে সাইন ইন সম্পূর্ণ করুন
নিরাপত্তা উদ্বেগ
একটি Apple মোবাইল অ্যাপে সাইন-ইন সম্পূর্ণ করা হচ্ছে
Firebase Hosting কনফিগার করুন
Firebase Hosting ডোমেন কনফিগার করুন: Firebase কনসোলে, হোস্টিং বিভাগটি খুলুন। আপনি যদি মোবাইল অ্যাপ্লিকেশনগুলিতে খোলা ইমেল লিঙ্কের জন্য ডিফল্ট ডোমেন ব্যবহার করতে চান, তাহলে আপনার ডিফল্ট সাইটে যান এবং আপনার ডিফল্ট Hosting ডোমেনটি নোট করুন৷ একটি ডিফল্ট Hosting ডোমেন সাধারণত এই মত দেখায়: PROJECT_ID .firebaseapp.com
।আপনি যখন ইনকামিং লিঙ্কটিকে আটকাতে আপনার অ্যাপটি কনফিগার করবেন তখন আপনার এই মানটির প্রয়োজন হবে৷ আপনি যদি ইমেল লিঙ্কের জন্য একটি কাস্টম ডোমেন ব্যবহার করতে চান, আপনি Firebase Hosting সাথে একটি নিবন্ধন করতে পারেন এবং লিঙ্কের ডোমেনের জন্য এটি ব্যবহার করতে পারেন।
অ্যাপল অ্যাপ্লিকেশন কনফিগার করা: আপনাকে অ্যাপ লিঙ্কগুলির জন্য একটি অ্যাসোসিয়েটেড ডোমেন হিসাবে নির্বাচিত ডোমেনটি কনফিগার করতে হবে৷ আপনার অ্যাপে এনটাইটেলমেন্ট সেট আপ করতে, টার্গেটের সাইনিং এবং ক্যাপাবিলিটিস ট্যাবটি Xcode-এ খুলুন এবং পূর্ববর্তী ধাপ থেকে অ্যাসোসিয়েটেড ডোমেন সক্ষমতায় Firebase হোস্টিং ডোমেন যোগ করুন। ডিফল্ট Firebase Hosting ডোমেইন ব্যবহার করলে, এটি হবে applinks: PROJECT_ID .firebaseapp.com
।আরও তথ্যের জন্য Apple এর ডকুমেন্টেশন সাইটে সম্পর্কিত ডোমেনগুলিকে সমর্থন করা দেখুন৷
লিঙ্ক যাচাই করুন এবং সাইন ইন করুন
if Auth.auth().isSignIn(withEmailLink: link) { Auth.auth().signIn(withEmail: email, link: self.link) { user, error in // ... } }
if ([[FIRAuth auth] isSignInWithEmailLink:link]) { [[FIRAuth auth] signInWithEmail:email link:link completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }]; }
ইমেল লিঙ্কের সাথে লিঙ্ক করা/পুনরায় প্রমাণীকরণ
let credential = EmailAuthCredential.credential(withEmail:email link:link) Auth.auth().currentUser?.link(with: credential) { authData, error in if (error) { // And error occurred during linking. return } // The provider was successfully linked. // The phone user can now sign in with their phone number or email. }
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email link:link]; [FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { if (error) { // And error occurred during linking. return; } // The provider was successfully linked. // The phone user can now sign in with their phone number or email. }];
let credential = EmailAuthProvider.credential(withEmail:email link:link) Auth.auth().currentUser?.reauthenticate(with: credential) { authData, error in if (error) { // And error occurred during re-authentication. return } // The user was successfully re-authenticated. }
FIRAuthCredential *credential = [FIREmailAuthCredential credentialWithEmail:email link:link]; [FIRAuth auth].currentUser reauthenticateWithCredential:credential completion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { if (error) { // And error occurred during re-authentication return; } // The user was successfully re-authenticated. }];
বাতিল করা হয়েছে: Firebase Dynamic Links ভিত্তিক যাচাইকরণ
অপ্রচলিত: ইমেল লিঙ্ক থেকে ইমেল-পাসওয়ার্ডের পার্থক্য
fetchSignInMethodsForEmail()
পদ্ধতিটি নিষ্ক্রিয় করে, যা আমরা পূর্বে শনাক্তকারী-প্রথম প্রবাহ বাস্তবায়নের জন্য সুপারিশ করেছিলাম।
পরবর্তী পদক্ষেপ
আপনার অ্যাপে, আপনি User
অবজেক্ট থেকে ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারীদের পরিচালনা দেখুন।আপনার Firebase Realtime Database এবং Cloud Storage সুরক্ষা নিয়মে , আপনি 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; }