अपने उपयोगकर्ताओं को Firebase से पुष्टि करने की अनुमति दी जा सकती है. इसके लिए, OAuth की सुविधा देने वाली कंपनियों, जैसे कि Microsoft Azure Active Directory का इस्तेमाल करें. इसके लिए, वेब पर आधारित सामान्य OAuth लॉगिन को अपने ऐप्लिकेशन में इंटिग्रेट करें. इसके लिए, Firebase SDK टूल का इस्तेमाल करें, ताकि साइन-इन की प्रोसेस को पूरा किया जा सके. इस फ़्लो के लिए, फ़ोन पर आधारित Firebase SDK टूल का इस्तेमाल करना ज़रूरी है. इसलिए, यह सिर्फ़ Android और Apple प्लैटफ़ॉर्म पर काम करता है.
शुरू करने से पहले
- अपने C++ प्रोजेक्ट में Firebase जोड़ें.
- Firebase console में, सुरक्षा > पुष्टि पर जाएं.
- साइन-इन करने का तरीका टैब में जाकर, Microsoft साइन-इन प्रोवाइडर को चालू करें.
-
उस सेवा देने वाली कंपनी की डेवलपर कंसोल से, सेवा देने वाली कंपनी के कॉन्फ़िगरेशन में क्लाइंट आईडी और क्लाइंट सीक्रेट जोड़ें:
- Microsoft OAuth क्लाइंट को रजिस्टर करने के लिए, Quickstart: Register an app with the Azure Active Directory v2.0 endpoint में दिए गए निर्देशों का पालन करें. ध्यान दें कि इस एंडपॉइंट पर, Microsoft के निजी खातों के साथ-साथ Azure Active Directory खातों का इस्तेमाल करके भी साइन इन किया जा सकता है. Azure Active Directory v2.0 के बारे में ज़्यादा जानें.
-
इन प्रोवाइडर के साथ ऐप्लिकेशन रजिस्टर करते समय, पक्का करें कि आपने अपने प्रोजेक्ट के लिए
*.firebaseapp.comडोमेन को अपने ऐप्लिकेशन के रीडायरेक्ट डोमेन के तौर पर रजिस्टर किया हो.
- सेव करें पर क्लिक करें.
firebase::auth::Auth क्लास को ऐक्सेस करना
Auth क्लास, सभी एपीआई कॉल के लिए गेटवे है.
- Auth और App हेडर फ़ाइलें जोड़ें:
#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);
Firebase SDK की मदद से, साइन-इन फ़्लो को मैनेज करना
Firebase SDK की मदद से साइन-इन फ़्लो को मैनेज करने के लिए, यह तरीका अपनाएं:
Microsoft के लिए सही प्रोवाइडर आईडी के साथ कॉन्फ़िगर किए गए
FederatedOAuthProviderDataका इंस्टेंस बनाएं.firebase::auth::FederatedOAuthProviderData provider_data(firebase::auth::MicrosoftAuthProvider::kProviderId);ज़रूरी नहीं: OAuth अनुरोध के साथ भेजने के लिए, अतिरिक्त कस्टम OAuth पैरामीटर तय करें.
// Prompt user to re-authenticate to Microsoft. provider_data.custom_parameters["prompt"] = "login"; // Target specific email with login hint. provider_data.custom_parameters["login_hint"] = "user@firstadd.onmicrosoft.com";Microsoft के साथ काम करने वाले पैरामीटर के बारे में जानने के लिए, Microsoft OAuth का दस्तावेज़ देखें. ध्यान दें कि
setCustomParameters()के साथ, Firebase के लिए ज़रूरी पैरामीटर पास नहीं किए जा सकते. ये पैरामीटर client_id, response_type, redirect_uri, state, scope और response_mode हैं.किसी ऐप्लिकेशन में सिर्फ़ किसी Azure AD टेनेंट के उपयोगकर्ताओं को साइन इन करने की अनुमति देने के लिए, Azure AD टेनेंट के फ़्रेंडली डोमेन नेम या टेनेंट के GUID आइडेंटिफ़ायर का इस्तेमाल किया जा सकता है. इसके लिए, कस्टम पैरामीटर ऑब्जेक्ट में "tenant" फ़ील्ड की जानकारी देनी होगी.
// Optional "tenant" parameter in case you are using an Azure AD tenant. // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com' // or "common" for tenant-independent tokens. // The default value is "common". provider_data.custom_parameters["tenant"] ="TENANT_ID";ज़रूरी नहीं: बुनियादी प्रोफ़ाइल के अलावा, OAuth 2.0 के अन्य स्कोप तय करें. इनके लिए, आपको पुष्टि करने वाली कंपनी से अनुरोध करना है.
provider_data.scopes.push_back("mail.read"); provider_data.scopes.push_back("calendars.read");ज़्यादा जानने के लिए, Microsoft की अनुमतियों और सहमति से जुड़ा दस्तावेज़ पढ़ें.
डेटा उपलब्ध कराने वाली कंपनी का डेटा कॉन्फ़िगर करने के बाद, इसका इस्तेमाल करके
FederatedOAuthProviderबनाएं.// Construct a FederatedOAuthProvider for use in Auth methods. firebase::auth::FederatedOAuthProvider provider(provider_data);Auth provider ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. ध्यान दें कि FirebaseAuth की अन्य कार्रवाइयों के उलट, यह आपके यूज़र इंटरफ़ेस (यूआई) को कंट्रोल करेगा. इसके लिए, यह एक वेब व्यू पॉप-अप करेगा, जिसमें उपयोगकर्ता अपने क्रेडेंशियल डाल सकता है.
साइन इन करने का फ़्लो शुरू करने के लिए,
SignInWithProviderको कॉल करें:firebase::Future<firebase::auth::AuthResult> result = auth->SignInWithProvider(provider_data);इसके बाद, आपका ऐप्लिकेशन इंतज़ार कर सकता है या Future पर कॉलबैक रजिस्टर कर सकता है.
OAuth ऐक्सेस टोकन का इस्तेमाल करके, Microsoft Graph API को कॉल किया जा सकता है.
Firebase Auth के साथ काम करने वाली अन्य कंपनियों के उलट, Microsoft फ़ोटो का यूआरएल नहीं देता है. इसके बजाय, प्रोफ़ाइल फ़ोटो के बाइनरी डेटा का अनुरोध Microsoft Graph API के ज़रिए करना होता है.
ऊपर दिए गए उदाहरणों में, साइन-इन फ़्लो पर फ़ोकस किया गया है. हालांकि, आपके पास
LinkWithProviderका इस्तेमाल करके, Microsoft Azure Active Directory सेवा देने वाली कंपनी को किसी मौजूदा उपयोगकर्ता से लिंक करने का विकल्प भी होता है. उदाहरण के लिए, एक ही उपयोगकर्ता के खाते से कई प्रोवाइडर को लिंक किया जा सकता है. इससे उपयोगकर्ता, इनमें से किसी भी प्रोवाइडर का इस्तेमाल करके साइन इन कर सकता है.firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);इसी पैटर्न का इस्तेमाल
ReauthenticateWithProviderके साथ किया जा सकता है. इसका इस्तेमाल, संवेदनशील कार्रवाइयों के लिए नए क्रेडेंशियल वापस पाने के लिए किया जा सकता है. इन कार्रवाइयों के लिए, हाल ही में लॉग इन करना ज़रूरी होता है.firebase::Future<firebase::auth::AuthResult> result = user.ReauthenticateWithProvider(provider_data);इसके बाद, आपका ऐप्लिकेशन इंतज़ार कर सकता है या Future पर कॉलबैक रजिस्टर कर सकता है.
अगले चरण
जब कोई उपयोगकर्ता पहली बार साइन इन करता है, तो एक नया उपयोगकर्ता खाता बनता है. यह खाता, उन क्रेडेंशियल से लिंक होता है जिनका इस्तेमाल करके उपयोगकर्ता ने साइन इन किया है. जैसे, उपयोगकर्ता का नाम और पासवर्ड, फ़ोन नंबर या पुष्टि करने वाली कंपनी की जानकारी. यह नया खाता, आपके 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वैरिएबल से साइन इन किए हुए उपयोगकर्ता का यूनीक User-ID पाया जा सकता है. साथ ही, इसका इस्तेमाल यह कंट्रोल करने के लिए किया जा सकता है कि कोई उपयोगकर्ता किस डेटा को ऐक्सेस कर सकता है.
उपयोगकर्ताओं को पुष्टि करने वाले कई प्रोवाइडर का इस्तेमाल करके, आपके ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है. इसके लिए, पुष्टि करने वाले प्रोवाइडर के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करें.
किसी उपयोगकर्ता को साइन आउट करने के लिए,
SignOut() को कॉल करें:
auth->SignOut();