आप OAuth प्रोवाइडर जैसे इसका इस्तेमाल करके Yahoo का इस्तेमाल करके, अपने ऐप्लिकेशन में वेब-आधारित सामान्य OAuth लॉगिन को इंटिग्रेट करके Firebase SDK टूल का इस्तेमाल, एंड-टू-एंड साइन-इन फ़्लो को पूरा करने के लिए किया जाता है. इस फ़्लो के लिए ज़रूरी है फ़ोन-आधारित Firebase SDK का इस्तेमाल करते हैं, तो यह सिर्फ़ Android और Apple प्लैटफ़ॉर्म.
शुरू करने से पहले
- अपने C++ प्रोजेक्ट में Firebase जोड़ें.
- Firebase कंसोल में, पुष्टि सेक्शन खोलें.
- साइन इन करने का तरीका टैब पर, Yahoo की सेवा देने वाली कंपनी को चालू करें.
- उस कंपनी के डेवलपर कंसोल से क्लाइंट आईडी और क्लाइंट सीक्रेट जोड़ें
प्रोवाइडर कॉन्फ़िगरेशन:
-
Yahoo OAuth क्लाइंट को रजिस्टर करने के लिए, Yahoo डेवलपर की वेबसाइट पर जाएं पर दस्तावेज़ Yahoo में वेब ऐप्लिकेशन रजिस्टर करना.
यह पक्का करें कि आपने दो Open Connect API अनुमतियों को चुना हो:
profile
औरemail
. - इन कंपनियों के साथ ऐप्लिकेशन रजिस्टर करते समय,
आपके प्रोजेक्ट के लिए
*.firebaseapp.com
डोमेन, आपके है.
-
- सेव करें पर क्लिक करें.
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);
Firebase SDK टूल की मदद से साइन-इन की प्रोसेस को मैनेज करना
Firebase SDK टूल की मदद से साइन इन फ़्लो मैनेज करने के लिए, यह तरीका अपनाएं:
FederatedOAuthProviderData
का एक इंस्टेंस बनाएं, जिसे इससे कॉन्फ़िगर किया गया हो के लिए सही प्रोवाइडर आईडी.firebase::auth::FederatedOAuthProviderData provider_data(firebase::auth::YahooAuthProvider::kProviderId);
ज़रूरी नहीं: ऐसे अतिरिक्त कस्टम OAuth पैरामीटर तय करें जिन्हें आपको इस्तेमाल करना है OAuth अनुरोध के साथ भेजें.
// Prompt user to re-authenticate to Yahoo. provider_data.custom_parameters["prompt"] = "login"; // Localize to French. provider_data.custom_parameters["language"] = "fr";
Yahoo! किन पैरामीटर के साथ काम करता है, यह जानने के लिए Yahoo OAuth दस्तावेज़. ध्यान दें कि आप Firebase के लिए ज़रूरी पैरामीटर को
custom_parameters()
. ये पैरामीटर client_id हैं, redirect_uri, response_type, दायरा, और state.ज़रूरी नहीं:
profile
के अलावा, OAuth 2.0 के अन्य दायरे तय करें औरemail
जिसके लिए आप पुष्टि करने की सुविधा देने वाली कंपनी से अनुरोध करना चाहते हैं. अगर आपके ऐप्लिकेशन को Yahoo API के निजी उपयोगकर्ता डेटा तक पहुंच की आवश्यकता है, तो आपको में एपीआई की अनुमतियों के तहत Yahoo API के लिए अनुमतियों का अनुरोध करना होगा Yahoo डेवलपर कंसोल. अनुरोध किए गए OAuth के दायरे, जिन्हें ऐप्लिकेशन की एपीआई अनुमतियों में पहले से कॉन्फ़िगर किया गया हो. उदाहरण के लिए, पढ़ें/लिखें उपयोगकर्ता के संपर्कों से ऐक्सेस का अनुरोध किया जाता हो. साथ ही, उसे ऐप्लिकेशन के एपीआई में पहले से कॉन्फ़िगर किया गया हो अनुमतियां, रीड ओनली OAuth दायरे के बजायsdct-w
पास होना चाहिएsdct-r
. ऐसा न करने पर,फ़्लो काम नहीं करेगा और गड़बड़ी का मैसेज असली उपयोगकर्ता.// Request access to Yahoo Mail API. provider_data.scopes.push_back("mail-r"); // This must be preconfigured in the app's API permissions. provider_data.scopes.push_back("sdct-w");
ज़्यादा जानकारी के लिए, इस लिंक पर जाएं Yahoo के दायरे से जुड़ा दस्तावेज़.
सेवा देने वाली कंपनी का डेटा कॉन्फ़िगर होने के बाद, इसका इस्तेमाल करके संघीय OAuthProvider.
// Construct a FederatedOAuthProvider for use in Auth methods. firebase::auth::FederatedOAuthProvider provider(provider_data);
पुष्टि करने वाले ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. ध्यान दें कि नापसंद अन्य FirebaseAuth कार्रवाइयां करते हैं, तो यह पॉप-अप करके आपके यूज़र इंटरफ़ेस (यूआई) को कंट्रोल करेगा एक वेब व्यू बना सकते है, जिसमें उपयोगकर्ता अपने क्रेडेंशियल डाल सकते हैं.
साइन इन फ़्लो शुरू करने के लिए,
SignInWithProvider
को कॉल करें:firebase::Future<firebase::auth::AuthResult> result = auth->SignInWithProvider(provider_data);
इसके बाद आपका आवेदन इंतज़ार कर सकता है या आने वाले समय में कॉलबैक रजिस्टर करें.
ऊपर दिए गए उदाहरण, साइन-इन करने के फ़्लो पर फ़ोकस करते हैं. हालांकि, आपके पास इसका इस्तेमाल करके Yahoo प्रोवाइडर को किसी मौजूदा उपयोगकर्ता से लिंक करने की
LinkWithProvider
. उदाहरण के लिए, आप एक से ज़्यादा साथ ही, साइन इन करने के लिए भी एक ही उपयोगकर्ता को अनुमति देनी होगी.firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);
ReauthenticateWithProvider
के साथ भी इसी पैटर्न का इस्तेमाल किया जा सकता है. इसे इसका इस्तेमाल, संवेदनशील कार्रवाइयों के लिए नए क्रेडेंशियल हासिल करने के लिए किया जाता है. हाल ही का लॉगिन.firebase::Future<firebase::auth::AuthResult> result = user.ReauthenticateWithProvider(provider_data);
इसके बाद, आपका ऐप्लिकेशन इंतज़ार कर सकता है या इस नंबर पर कॉलबैक रजिस्टर कर सकता है भविष्य.
अगले चरण
किसी उपयोगकर्ता के पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बना दिया जाता है और आपके खाते के क्रेडेंशियल मौजूद हैं, जैसे कि उपयोगकर्ता नाम और पासवर्ड, या पुष्टि करने वाली कंपनी की जानकारी—उपयोगकर्ता ने जिससे साइन इन किया है. यह नया खाते को आपके 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();