আপনি Firebase Authentication ব্যবহার করে ব্যবহারকারীদের আপনার অ্যাপে সাইন-ইন করার অনুমতি দিতে পারেন। এর মধ্যে ইমেল আইডি ও পাসওয়ার্ড দিয়ে সাইন-ইন করা এবং Google Sign-in ও Facebook Login-এর মতো ফেডারেটেড আইডেন্টিটি প্রদানকারী সহ এক বা একাধিক সাইন-ইন পদ্ধতি অন্তর্ভুক্ত। এই টিউটোরিয়াল আপনাকে Firebase Authentication-এর সাথে শুরু করতে সাহায্য করে। এটি আপনাকে দেখায় যে কীভাবে আপনার অ্যাপে ইমেল আইডি ও পাসওয়ার্ড দিয়ে সাইন-ইন করার সুবিধা যোগ করতে হয়।
Firebase-এর সাথে আপনার C++ প্রোজেক্ট কানেক্ট করা
আপনি Firebase Authentication ব্যবহার করার আগে, আপনাকে এগুলি করতে হবে:
আপনার C++ প্রোজেক্ট রেজিস্টার করুন এবং Firebase ব্যবহার করার জন্য এটি কনফিগার করুন।
আপনার C++ প্রোজেক্টে আগে থেকেই Firebase ব্যবহার করা হলে, এটি আগেই Firebase-এর জন্য রেজিস্টার ও কনফিগার করা হয়ে গেছে।
আপনার C++ প্রোজেক্টে Firebase C++ SDK যোগ করুন।
মনে রাখবেন, আপনার C++ প্রোজেক্টে Firebase যোগ করার জন্য Firebase কনসোল এবং আপনার খোলা C++ প্রোজেক্ট (যেমন, আপনি কনসোল থেকে Firebase কনফিগারেশন ফাইল ডাউনলোড করেন, তারপর সেগুলি আপনার C++ প্রোজেক্টে সরান) দুটিতেই টাস্ক করতে হয়।
নতুন ব্যবহারকারীদের সাইন-আপ করা
এমন একটি ফর্ম তৈরি করুন যা নতুন ব্যবহারকারীদের তাদের
ইমেল আইডি এবং পাসওয়ার্ড ব্যবহার করে আপনার অ্যাপে রেজিস্টার করতে দেয়। ব্যবহারকারী ফর্ম পূরণ করলে, তার দেওয়া ইমেল আইডি ও পাসওয়ার্ড
যাচাই করে নিন, তারপর সেগুলি
CreateUserWithEmailAndPassword পদ্ধতিতে পাস করুন:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPassword(email, password);
CreateUserWithEmailAndPasswordLastResult Future অবজেক্টে কলব্যাক রেজিস্টার করে অথবা, আপনি যদি কোনও ধরনের পিরিয়ডিক আপডেট লুপ সহ কোনও গেম বা অ্যাপ লিখে থাকেন, তাহলে
আপডেট লুপে স্ট্যাটাস পোল করে, অ্যাকাউন্ট তৈরি করার অপারেশনের স্ট্যাটাস চেক করতে পারবেন।
যেমন, Future ব্যবহার করা:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPasswordLastResult();
// The lambda has the same signature as the callback function.
result.OnCompletion(
[](const firebase::Future<firebase::auth::AuthResult>& result,
void* user_data) {
// `user_data` is the same as &my_program_context, below.
// Note that we can't capture this value in the [] because std::function
// is not supported by our minimum compiler spec (which is pre C++11).
MyProgramContext* program_context =
static_cast<MyProgramContext*>(user_data);
// Process create user result...
(void)program_context;
},
&my_program_context);
অথবা, পোলিং ব্যবহার করতে, আপনার গেমের আপডেট লুপে নিম্নলিখিত উদাহরণের মতো কিছু করুন:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
if (result.error() == firebase::auth::kAuthErrorNone) {
firebase::auth::AuthResult* auth_result = *result.result();
printf("Create user succeeded for email %s\n", auth_result.user.email().c_str());
} else {
printf("Created user failed with error '%s'\n", result.error_message());
}
}
আগে থেকেই থাকা ব্যবহারকারীদের সাইন-ইন করা
এমন একটি ফর্ম তৈরি করুন যা আগে থেকে থাকা ব্যবহারকারীদের তাদের ইমেল আইডি
ও পাসওয়ার্ড ব্যবহার করে সাইন-ইন করতে দেয়। ব্যবহারকারী ফর্ম পূরণ করলে, SignInWithEmailAndPassword মেথড কল করুন:
firebase::Future<firebase::auth::AuthResult> result =
auth->SignInWithEmailAndPassword(email, password);
সাইন-আপের ফলাফল যেভাবে পেয়েছিলেন, ঠিক সেইভাবে সাইন-ইন অপারেশনের ফলাফল পান।
একটি যাচাইকরণ স্টেট লিসনার সেট করুন এবং অ্যাকাউন্ট ডেটা পান
সাইন-ইন ও সাইন-আউট ইভেন্টের উত্তর দিতে, গ্লোবাল অথেন্টিকেশন অবজেক্টে একটি লিসনার অ্যাটাচ করুন। ব্যবহারকারীর সাইন-ইন স্ট্যাটাস পরিবর্তন হলেই এই লিসনারকে কল করা হয়। কারণ, যাচাইকরণ অবজেক্ট সম্পূর্ণ ইনিশিয়ালাইজ করা এবং নেটওয়ার্ক কল সম্পূর্ণ হওয়ার পরেই লিসনার রান করে, তাই সাইন-ইন করা ব্যবহারকারীর তথ্য পাওয়ার জন্য এটিই সবচেয়ে ভাল জায়গা।
firebase::auth::AuthStateListener
অ্যাবস্ট্র্যাক্ট ক্লাস প্রয়োগ করে লিসনার তৈরি করুন। যেমন, কোনও ব্যবহারকারী সফলভাবে সাইন-ইন করলে, সেই ব্যবহারকারীর সম্পর্কে তথ্য পেতে
একটি লিসনার তৈরি করতে:
class MyAuthStateListener : public firebase::auth::AuthStateListener {
public:
void OnAuthStateChanged(firebase::auth::Auth* auth) override {
firebase::auth::User user = auth.current_user();
if (user.is_valid()) {
// User is signed in
printf("OnAuthStateChanged: signed_in %s\n", user.uid().c_str());
const std::string displayName = user.DisplayName();
const std::string emailAddress = user.Email();
const std::string photoUrl = user.PhotoUrl();
} else {
// User is signed out
printf("OnAuthStateChanged: signed_out\n");
}
// ...
}
};
firebase::auth::Auth অবজেক্টের
AddAuthStateListener পদ্ধতির সাথে লিসনার অ্যাটাচ করুন:
MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);
পরবর্তী ধাপ
অন্যান্য পরিচয় প্রদানকারী ও বেনামী অতিথি অ্যাকাউন্টের জন্য কীভাবে সহায়তা যোগ করতে হয় তা জানুন: