Firebase Authentication का इस्तेमाल करके, आप अपने उपयोगकर्ताओं को Firebase अपने ईमेल पते और पासवर्ड का इस्तेमाल करके और आपके ऐप्लिकेशन के पासवर्ड वाले खाते.
शुरू करने से पहले
- अपने C++ प्रोजेक्ट में Firebase जोड़ें.
- अगर आपने अभी तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल.
- ईमेल/पासवर्ड से साइन-इन करने की सुविधा चालू करें:
- Firebase कंसोल में, खोलें पुष्टि सेक्शन में जाएं.
- साइन इन करने का तरीका टैब पर, ईमेल/पासवर्ड साइन इन करने की सुविधा चालू करें तरीका और सेव करें पर क्लिक करें.
firebase::auth::Auth
क्लास को ऐक्सेस करें
Auth
क्लास, सभी एपीआई कॉल के लिए गेटवे होती है.
- पुष्टि करने वाली और ऐप्लिकेशन की हेडर फ़ाइलें जोड़ें:
#include "firebase/app.h" #include "firebase/auth.h"
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है - अपने इनिशलाइज़ेशन कोड में,
firebase::App
क्लास.#if defined(__ANDROID__) firebase::App* app = firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity); #else firebase::App* app = firebase::App::Create(firebase::AppOptions()); #endif // defined(__ANDROID__)
- अपनी
firebase::App
के लिएfirebase::auth::Auth
क्लास पाएं.App
औरAuth
के बीच वन-टू-वन मैपिंग है.firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
पासवर्ड पर आधारित खाता बनाना
पासवर्ड का इस्तेमाल करके नया उपयोगकर्ता खाता बनाने के लिए, यहां दिया गया तरीका अपनाएं: आपके ऐप्लिकेशन का साइन-इन कोड:
- जब कोई नया उपयोगकर्ता आपके ऐप्लिकेशन के साइन-अप फ़ॉर्म का इस्तेमाल करके साइन अप करता है, तो कोई भी नया उपयोगकर्ता खाते की पुष्टि करने के वे चरण जो आपके ऐप्लिकेशन को ज़रूरी हैं, जैसे कि नए खाते का पासवर्ड सही तरीके से टाइप किया गया है और वह आपकी जटिलता का पालन करता है ज़रूरतें.
- नए उपयोगकर्ता का ईमेल पता और पासवर्ड पास करके नया खाता बनाना
Auth::CreateUserWithEmailAndPassword
को:firebase::Future<firebase::auth::AuthResult> result = auth->CreateUserWithEmailAndPassword(email, password);
- अगर आपके प्रोग्राम में एक अपडेट लूप है, जो नियमित रूप से चलता है (जैसे 30 या 60 पर
बार प्रति सेकंड), तो आप इसकी मदद से हर अपडेट के लिए एक बार नतीजे देख सकते हैं
Auth::CreateUserWithEmailAndPasswordLastResult
:firebase::Future<firebase::auth::AuthResult> result = auth->CreateUserWithEmailAndPasswordLastResult(); if (result.status() == firebase::kFutureStatusComplete) { if (result.error() == firebase::auth::kAuthErrorNone) { const 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()); } }
इसके अलावा, अगर आपका प्रोग्राम इवेंट के आधार पर चलाया जाता है, तो इस पर कॉलबैक रजिस्टर करें आने वाला समय.
ईमेल पते और पासवर्ड वाले उपयोगकर्ता खाते में साइन इन करें
पासवर्ड से उपयोगकर्ता साइन इन करने का तरीका, नया खाता बनाने के लिए. अपने ऐप्लिकेशन के साइन-इन फ़ंक्शन में, ये काम करें:
- जब कोई उपयोगकर्ता आपके ऐप्लिकेशन में साइन इन करता है, तो उपयोगकर्ता का ईमेल पता पास करें और
firebase::auth::Auth::SignInWithEmailAndPassword
का पासवर्ड:firebase::Future<firebase::auth::AuthResult> result = auth->SignInWithEmailAndPassword(email, password);
- अगर आपके प्रोग्राम में एक अपडेट लूप है, जो नियमित रूप से चलता है (जैसे 30 या 60 पर
बार प्रति सेकंड), तो आप इसकी मदद से हर अपडेट के लिए एक बार नतीजे देख सकते हैं
Auth::SignInWithEmailAndPasswordLastResult
:firebase::Future<firebase::auth::AuthResult> result = auth->SignInWithEmailAndPasswordLastResult(); if (result.status() == firebase::kFutureStatusComplete) { if (result.error() == firebase::auth::kAuthErrorNone) { const firebase::auth::AuthResult auth_result = *result.result(); printf("Sign in succeeded for email %s\n", auth_result.user.email().c_str()); } else { printf("Sign in failed with error '%s'\n", result.error_message()); } }
इसके अलावा, अगर आपका प्रोग्राम इवेंट के आधार पर चलाया जाता है, तो इस पर कॉलबैक रजिस्टर करें आने वाला समय.
फ़्यूचर के लिए कॉलबैक रजिस्टर करना
कुछ प्रोग्राम मेंUpdate
फ़ंक्शन होते हैं, जिन्हें प्रति सेकंड 30 या 60 बार कॉल किया जाता है.
उदाहरण के लिए, कई गेम इस मॉडल का पालन करते हैं. ये प्रोग्राम, LastResult
को कॉल कर सकते हैं
फ़ंक्शन का इस्तेमाल करें.
हालांकि, अगर आपका प्रोग्राम इवेंट के आधार पर तय होता है, तो आपके पास कॉलबैक फ़ंक्शन को रजिस्टर करने का विकल्प होता है.
फ़्यूचर के पूरा होने पर कॉलबैक फ़ंक्शन को कॉल किया जाता है.
void OnCreateCallback(const firebase::Future<firebase::auth::User*>& result, void* user_data) { // The callback is called when the Future enters the `complete` state. assert(result.status() == firebase::kFutureStatusComplete); // Use `user_data` to pass-in program context, if you like. MyProgramContext* program_context = static_cast<MyProgramContext*>(user_data); // Important to handle both success and failure situations. if (result.error() == firebase::auth::kAuthErrorNone) { firebase::auth::User* user = *result.result(); printf("Create user succeeded for email %s\n", user->email().c_str()); // Perform other actions on User, if you like. firebase::auth::User::UserProfile profile; profile.display_name = program_context->display_name; user->UpdateUserProfile(profile); } else { printf("Created user failed with error '%s'\n", result.error_message()); } } void CreateUser(firebase::auth::Auth* auth) { // Callbacks work the same for any firebase::Future. firebase::Future<firebase::auth::AuthResult> result = auth->CreateUserWithEmailAndPasswordLastResult(); // `&my_program_context` is passed verbatim to OnCreateCallback(). result.OnCompletion(OnCreateCallback, &my_program_context); }अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अगर आप चाहें, तो कॉलबैक फ़ंक्शन को लैम्डा भी किया जा सकता है.
void CreateUserUsingLambda(firebase::auth::Auth* auth) { // Callbacks work the same for any firebase::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::User*>& 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 Authentication ऐसे तरीके जो ईमेल पतों को पैरामीटर के रूप में लेते हैं अगर किसी ईमेल पते को रजिस्टर नहीं किया गया है, तो उस समय दिखने वाली गड़बड़ी (उदाहरण के लिए, ईमेल पते और पासवर्ड से साइन इन करते समय) या जब इस्तेमाल नहीं किया गया हो. उदाहरण के लिए, उपयोगकर्ता का ईमेल पता बदलते समय. इससे लोगों को कुछ खास तरीकों के बारे में सुझाव देने में मदद मिल सकती है. हालांकि, यह तरीका भी मददगार साबित हो सकता है गलत तरीके से नुकसान पहुंचाने वाले लोगों या ग्रुप का गलत इस्तेमाल, उपयोगकर्ता.
इस जोखिम को कम करने के लिए, हमारा सुझाव है कि आप ईमेल पता सुरक्षा चालू करें
अपने प्रोजेक्ट के लिए, Google Cloud gcloud
टूल का इस्तेमाल करें. ध्यान दें कि इसे चालू करने से
यह सुविधा, गड़बड़ी की रिपोर्ट करने के Firebase Authentication के तरीके में बदलाव करती है: पक्का करें कि आपका ऐप्लिकेशन
में सबसे सटीक गड़बड़ियों पर निर्भर नहीं रहता है.
अगले चरण
किसी उपयोगकर्ता के पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बना दिया जाता है और आपके खाते के क्रेडेंशियल मौजूद हैं, जैसे कि उपयोगकर्ता नाम और पासवर्ड, या पुष्टि करने वाली कंपनी की जानकारी—उपयोगकर्ता ने जिससे साइन इन किया है. यह नया खाते को आपके Firebase प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. साथ ही, इसका इस्तेमाल आपके प्रोजेक्ट के हर ऐप्लिकेशन में हर उपयोगकर्ता के लिए उपलब्ध होता है. भले ही, उपयोगकर्ता किसी भी तरह से साइन इन करता हो.
-
अपने ऐप्लिकेशन में, उपयोगकर्ता की बुनियादी प्रोफ़ाइल जानकारी को
firebase::auth::User
ऑब्जेक्ट:firebase::auth::User user = auth->current_user(); if (user.is_valid()) { std::string name = user.display_name(); std::string email = user.email(); std::string photo_url = user.photo_url(); // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use firebase::auth::User::Token() instead. std::string uid = user.uid(); }
आपके Firebase Realtime Database और Cloud Storage में सुरक्षा नियम, आप
auth
वैरिएबल से साइन-इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी पाएं, और इसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.
उपयोगकर्ताओं को, पुष्टि करने के एक से ज़्यादा तरीके का इस्तेमाल करके, अपने ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है पुष्टि करने वाले के क्रेडेंशियल जोड़कर मौजूदा उपयोगकर्ता खाते से लिंक किया जा सकता है.
उपयोगकर्ता को साइन आउट करने के लिए पर कॉल करें
SignOut()
:
auth->SignOut();