Google 致力于为黑人社区推动种族平等。查看具体举措

एकता के साथ फोन नंबर का उपयोग करके फायरबेस के साथ प्रमाणित करें

आप उपयोगकर्ता के फ़ोन पर एक SMS संदेश भेजकर उपयोगकर्ता में साइन इन करने के लिए Firebase प्रमाणीकरण का उपयोग कर सकते हैं। उपयोगकर्ता एसएमएस संदेश में निहित वन-टाइम कोड का उपयोग करके साइन इन करता है।

यह दस्तावेज़ वर्णन करता है कि Firebase SDK का उपयोग करके फ़ोन नंबर साइन-इन प्रवाह को कैसे कार्यान्वित किया जाए।

शुरू करने से पहले

  1. इससे पहले कि आप Firebase प्रमाणीकरण का उपयोग कर सकें, आपको अपने Unity प्रोजेक्ट में Firebase Unity SDK (विशेष रूप से, FirebaseAuth.unitypackage ) को जोड़ना होगा।

    अपने यूनिटी प्रोजेक्ट में फायरबेस जोड़ें में इन प्रारंभिक सेटअप चरणों के लिए विस्तृत निर्देश प्राप्त करें।

  2. अगर आपने अभी तक अपने ऐप को अपने Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो इसे Firebase कंसोल से करें।

iOS पर, ध्यान दें कि फ़ोन नंबर साइन-इन के लिए एक भौतिक उपकरण की आवश्यकता होती है और यह सिम्युलेटर पर काम नहीं करेगा।

सुरक्षा चिंतायें

केवल एक फ़ोन नंबर का उपयोग करके प्रमाणीकरण, जबकि सुविधाजनक, अन्य उपलब्ध विधियों की तुलना में कम सुरक्षित है, क्योंकि फ़ोन नंबर का अधिकार उपयोगकर्ताओं के बीच आसानी से स्थानांतरित किया जा सकता है। साथ ही, एकाधिक उपयोगकर्ता प्रोफ़ाइल वाले डिवाइस पर, कोई भी उपयोगकर्ता जो SMS संदेश प्राप्त कर सकता है, डिवाइस के फ़ोन नंबर का उपयोग करके किसी खाते में साइन इन कर सकता है।

यदि आप अपने ऐप में फ़ोन नंबर आधारित साइन-इन का उपयोग करते हैं, तो आपको इसे अधिक सुरक्षित साइन-इन विधियों के साथ पेश करना चाहिए, और उपयोगकर्ताओं को फ़ोन नंबर साइन-इन का उपयोग करने के लिए सुरक्षा ट्रेडऑफ़ के बारे में सूचित करना चाहिए।

अपने Firebase प्रोजेक्ट के लिए फ़ोन नंबर साइन-इन सक्षम करें

SMS द्वारा उपयोगकर्ताओं में साइन इन करने के लिए, आपको पहले अपने Firebase प्रोजेक्ट के लिए फ़ोन नंबर साइन-इन विधि को सक्षम करना होगा:

  1. फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें।
  2. साइन-इन विधि पृष्ठ पर, फ़ोन नंबर साइन-इन विधि सक्षम करें।

Firebase का फ़ोन नंबर साइन-इन अनुरोध कोटा इतना अधिक है कि अधिकांश ऐप्स प्रभावित नहीं होंगे। हालाँकि, यदि आपको फ़ोन प्रमाणीकरण के साथ बहुत अधिक मात्रा में उपयोगकर्ताओं में साइन इन करने की आवश्यकता है, तो आपको अपनी मूल्य निर्धारण योजना को अपग्रेड करने की आवश्यकता हो सकती है। मूल्य निर्धारण पृष्ठ देखें।

APN सूचनाएं प्राप्त करना प्रारंभ करें (केवल iOS)

आईओएस पर फोन नंबर प्रमाणीकरण का उपयोग करने के लिए, आपका ऐप फायरबेस से एपीएन सूचनाएं प्राप्त करने में सक्षम होना चाहिए। जब आप किसी उपयोगकर्ता को किसी डिवाइस पर पहली बार उनके फ़ोन नंबर से साइन इन करते हैं, तो Firebase प्रमाणीकरण डिवाइस को एक साइलेंट पुश नोटिफिकेशन भेजता है ताकि यह सत्यापित किया जा सके कि फ़ोन नंबर साइन-इन अनुरोध आपके ऐप से आता है। (इस कारण से, सिमुलेटर पर फ़ोन नंबर साइन-इन का उपयोग नहीं किया जा सकता है।)

फायरबेस प्रमाणीकरण के साथ उपयोग के लिए एपीएन अधिसूचनाओं को सक्षम करने के लिए:

  1. एक्सकोड में, अपने प्रोजेक्ट के लिए पुश नोटिफिकेशन सक्षम करें।
  2. अपने एपीएन प्रमाणपत्र को फायरबेस पर अपलोड करें। यदि आपके पास पहले से APN प्रमाणपत्र नहीं है, तो Apple डेवलपर सदस्य केंद्र में एक प्रमाणपत्र बनाना सुनिश्चित करें।

    1. फायरबेस कंसोल में अपने प्रोजेक्ट के अंदर, गियर आइकन चुनें, प्रोजेक्ट सेटिंग्स चुनें और फिर क्लाउड मैसेजिंग टैब चुनें।

    2. अपने विकास प्रमाणपत्र, अपने उत्पादन प्रमाणपत्र, या दोनों के लिए प्रमाणपत्र अपलोड करें बटन का चयन करें। कम से कम एक की आवश्यकता है।

    3. प्रत्येक प्रमाणपत्र के लिए, .p12 फ़ाइल का चयन करें, और पासवर्ड प्रदान करें, यदि कोई हो। सुनिश्चित करें कि इस प्रमाणपत्र की बंडल आईडी आपके ऐप की बंडल आईडी से मेल खाती है। सहेजें चुनें.

उपयोगकर्ता के फ़ोन पर सत्यापन कोड भेजें

फ़ोन नंबर साइन-इन आरंभ करने के लिए, उपयोगकर्ता को एक इंटरफ़ेस प्रस्तुत करें जो उन्हें अपना फ़ोन नंबर प्रदान करने के लिए प्रेरित करता है, और फिर PhoneAuthProvider.VerifyPhoneNumber पर कॉल करके अनुरोध करें कि Firebase उपयोगकर्ता के फ़ोन पर SMS द्वारा प्रमाणीकरण कोड भेजे:

  1. उपयोगकर्ता का फ़ोन नंबर प्राप्त करें।

    कानूनी आवश्यकताएं अलग-अलग होती हैं, लेकिन सर्वोत्तम अभ्यास के रूप में और अपने उपयोगकर्ताओं के लिए अपेक्षाएं निर्धारित करने के लिए, आपको उन्हें सूचित करना चाहिए कि यदि वे फ़ोन साइन-इन का उपयोग करते हैं, तो उन्हें सत्यापन के लिए एक एसएमएस संदेश प्राप्त हो सकता है और मानक दरें लागू हो सकती हैं।

  2. PhoneAuthProvider.VerifyPhoneNumber पर कॉल करें, इसे उपयोगकर्ता का फ़ोन नंबर दें।
    PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth);
    provider.VerifyPhoneNumber(phoneNumber, phoneAuthTimeoutMs, null,
      verificationCompleted: (credential) => {
        // Auto-sms-retrieval or instant validation has succeeded (Android only).
        // There is no need to input the verification code.
        // `credential` can be used instead of calling GetCredential().
      },
      verificationFailed: (error) => {
        // The verification code was not sent.
        // `error` contains a human readable explanation of the problem.
      },
      codeSent: (id, token) => {
        // Verification code was successfully sent via SMS.
        // `id` contains the verification id that will need to passed in with
        // the code from the user when calling GetCredential().
        // `token` can be used if the user requests the code be sent again, to
        // tie the two requests together.
      },
      codeAutoRetrievalTimeout: (id) => {
        // Called when the auto-sms-retrieval has timed out, based on the given
        // timeout parameter.
        // `id` contains the verification id of the request that timed out.
      });
    
    जब आप PhoneAuthProvider.VerifyPhoneNumber , Firebase को कॉल करते हैं,
    • (iOS पर), आपके ऐप पर एक साइलेंट पुश नोटिफिकेशन भेजता है।
    • फायरबेस निर्दिष्ट फोन नंबर पर एक प्रमाणीकरण कोड वाला एक एसएमएस संदेश भेजता है और आपके पूरा होने के कार्य के लिए एक सत्यापन आईडी पास करता है। उपयोगकर्ता में साइन इन करने के लिए आपको सत्यापन कोड और सत्यापन आईडी दोनों की आवश्यकता होगी।
  3. सत्यापन आईडी सहेजें और जब आपका ऐप लोड हो जाए तो उसे पुनर्स्थापित करें। ऐसा करने से, आप यह सुनिश्चित कर सकते हैं कि उपयोगकर्ता द्वारा साइन-इन प्रवाह पूरा करने से पहले (उदाहरण के लिए, एसएमएस ऐप पर स्विच करते समय) आपका ऐप समाप्त होने पर भी आपके पास एक वैध सत्यापन आईडी है।

    आप किसी भी तरह से सत्यापन आईडी जारी रख सकते हैं। सत्यापन आईडी को UnityEngine.PlayerPrefs के साथ सहेजना एक आसान तरीका है।

यदि codeSent को पास किया गया कॉलबैक कहा जाता है, तो आप उपयोगकर्ता को एसएमएस संदेश में सत्यापन कोड टाइप करने के लिए संकेत दे सकते हैं।

दूसरी ओर, यदि verificationCompleted के लिए कॉलबैक पूर्ण कहा जाता है, तो स्वचालित सत्यापन सफल हो गया है और अब आपके पास एक Credential होगा जिसके साथ आप नीचे वर्णित अनुसार उपयोग कर सकते हैं।

सत्यापन कोड के साथ उपयोगकर्ता में साइन इन करें

उपयोगकर्ता द्वारा आपके ऐप को एसएमएस संदेश से सत्यापन कोड प्रदान करने के बाद, सत्यापन कोड और सत्यापन आईडी से एक Credential ऑब्जेक्ट बनाकर और उस ऑब्जेक्ट को FirebaseAuth.SignInWithCredential पर पास करके उपयोगकर्ता को साइन इन करें।

  1. उपयोगकर्ता से सत्यापन कोड प्राप्त करें।
  2. सत्यापन कोड और सत्यापन आईडी से एक Credential ऑब्जेक्ट बनाएं।
    Credential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. Credential ऑब्जेक्ट के साथ उपयोगकर्ता में साइन इन करें:
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " +
                       task.Exception);
        return;
      }
    
      FirebaseUser newUser = task.Result;
      Debug.Log("User signed in successfully");
      // This should display the phone number.
      Debug.Log("Phone number: " + newUser.PhoneNumber);
      // The phone number providerID is 'phone'.
      Debug.Log("Phone provider ID: " + newUser.ProviderId);
    });
    

अगले कदम

उपयोगकर्ता द्वारा पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बनाया जाता है और क्रेडेंशियल से लिंक किया जाता है—अर्थात, उपयोगकर्ता नाम और पासवर्ड, फ़ोन नंबर, या प्रमाणीकरण प्रदाता जानकारी—जिससे उपयोगकर्ता ने साइन इन किया है। यह नया खाता आपके फ़ायरबेस प्रोजेक्ट के हिस्से के रूप में संग्रहीत किया जाता है, और इसका उपयोग आपके प्रोजेक्ट में प्रत्येक ऐप में उपयोगकर्ता की पहचान करने के लिए किया जा सकता है, भले ही उपयोगकर्ता कैसे साइन इन करे।

  • अपने ऐप्लिकेशन में, आप उपयोगकर्ता की बुनियादी प्रोफ़ाइल जानकारी Firebase.Auth.FirebaseUser ऑब्जेक्ट से प्राप्त कर सकते हैं:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // 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 User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • अपने फायरबेस रीयलटाइम डेटाबेस और क्लाउड स्टोरेज सुरक्षा नियमों में, आप auth चर से साइन-इन किए गए उपयोगकर्ता की अद्वितीय उपयोगकर्ता आईडी प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।

आप प्रमाणीकरण प्रदाता क्रेडेंशियल्स को मौजूदा उपयोगकर्ता खाते से लिंक करके एकाधिक प्रमाणीकरण प्रदाताओं का उपयोग करके उपयोगकर्ताओं को अपने ऐप में साइन इन करने की अनुमति दे सकते हैं।

किसी उपयोगकर्ता को साइन आउट करने के लिए, SignOut() पर कॉल करें:

auth.SignOut();