Unity के साथ फ़ोन नंबर का इस्तेमाल करके Firebase से पुष्टि करें

उपयोगकर्ता को साइन इन करने के लिए, मैसेज (एसएमएस) भेजकर Firebase Authentication का इस्तेमाल किया जा सकता है उपयोगकर्ता के फ़ोन पर कॉपी कर सकते हैं. उपयोगकर्ता इसमें शामिल एक बार इस्तेमाल होने वाले कोड का इस्तेमाल करके साइन इन करता है एसएमएस मैसेज.

इस दस्तावेज़ में बताया गया है कि का इस्तेमाल करें.

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

  1. इस्तेमाल करने से पहले Firebase Authentication आपको Firebase Unity SDK टूल जोड़ना होगा (खास तौर पर, FirebaseAuth.unitypackage) को आपके Unity प्रोजेक्ट में जोड़ा गया है.

    सेटअप के इन शुरुआती चरणों के बारे में ज़्यादा जानकारी के लिए, Firebase को अपनी Unity में जोड़ना प्रोजेक्ट पर जाएं.

  2. अगर आपने अभी तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल.
  3. फ़ोन नंबर से साइन-इन करने के लिए, प्लैटफ़ॉर्म की ज़रूरी शर्तों को समझें:
    • फ़ोन नंबर से साइन इन करने की सुविधा, सिर्फ़ मोबाइल प्लैटफ़ॉर्म के लिए है.
    • iOS पर, फ़ोन नंबर से साइन इन करने के लिए किसी डिवाइस की ज़रूरत होती है. यह सिम्युलेटर पर काम नहीं करेगा.

सुरक्षा से जुड़ी समस्याएं

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

अगर आपके ऐप्लिकेशन में फ़ोन नंबर के ज़रिए साइन इन करने की सुविधा का इस्तेमाल किया जाता है, तो आपको यह ऑफ़र देना चाहिए और साइन-इन करने के ज़्यादा सुरक्षित तरीकों के बारे में जानकारी मिलेगी. फ़ोन नंबर से साइन-इन न करने पर हो सकता है.

अपने Firebase प्रोजेक्ट के लिए, फ़ोन नंबर से साइन-इन करने की सुविधा चालू करना

उपयोगकर्ताओं को एसएमएस से साइन इन करने के लिए, पहले आपको फ़ोन नंबर के ज़रिए साइन इन करने की सुविधा चालू करनी होगी इस तरीके का इस्तेमाल करें:

  1. Firebase कंसोल में, पुष्टि करना सेक्शन खोलें.
  2. साइन इन करने का तरीका पेज पर, फ़ोन नंबर चालू करें साइन-इन करने का तरीका.

एपीएन से जुड़ी सूचनाएं पाना शुरू करें (सिर्फ़ iOS के लिए)

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

Firebase Authentication के साथ इस्तेमाल करने से जुड़ी एपीएन की सूचनाएं पाने की सुविधा चालू करने के लिए:

  1. Xcode में, अपने प्रोजेक्ट के लिए पुश नोटिफ़िकेशन चालू करें.
  2. अपने एपीएन सर्टिफ़िकेट को Firebase पर अपलोड करें. अगर आपके पास पहले से कोई एपीएन सर्टिफ़िकेट नहीं है, तो पक्का करें कि आपने Apple Developer सदस्य केंद्र.

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

    2. सर्टिफ़िकेट अपलोड करें चुनें बटन पर क्लिक किया, तो आपका प्रोडक्शन सर्टिफ़िकेट या फिर दोनों का इस्तेमाल करना होगा. कम से कम एक है आवश्यक.

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

उपयोगकर्ता के फ़ोन पर पुष्टि करने के लिए कोड भेजें

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

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

    कानूनी समझौते की शर्तें अलग-अलग हो सकती हैं, लेकिन ये सबसे सही तरीके हैं और अपने उपयोगकर्ताओं के लिए उम्मीदें सेट करने के लिए, आपको उन्हें यह बताना होगा कि अगर वे फ़ोन से प्रवेश करते हैं, तो उन्हें एक एसएमएस संदेश मिल सकता है, दरें लागू होंगी.

  2. PhoneAuthProvider.VerifyPhoneNumber को कॉल करें और इसके लिए PhoneAuthOptions पास करें जिसमें उपयोगकर्ता का फ़ोन नंबर शामिल हो.
    PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth);
    provider.VerifyPhoneNumber(
      new Firebase.Auth.PhoneAuthOptions {
        PhoneNumber = phoneNumber,
        TimeoutInMilliseconds = phoneAuthTimeoutMs,
        ForceResendingToken = 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 पर), आपके ऐप्लिकेशन को साइलेंट पुश नोटिफ़िकेशन भेजता है.
    • Firebase एक पुष्टि करने वाला मैसेज (एसएमएस) भेजता है फ़ोन नंबर पर कोड भेजेगा और एक पुष्टि आईडी पूरा करने का फ़ंक्शन. आपको पुष्टि करने के लिए दोनों कोड की ज़रूरत होगी साथ ही, साइन इन करने के लिए पुष्टि करने वाला आईडी भी दें.
  3. पुष्टि करने के लिए इस्तेमाल होने वाले आईडी को सेव करें और ऐप्लिकेशन लोड होने पर इसे वापस लाएं. ऐसा करके, यह पक्का किया जा सकता है कि अगर आपका ऐप्लिकेशन उपयोगकर्ता के साइन इन फ़्लो को पूरा करने से पहले ही खत्म कर दिया जाता हो (उदाहरण के लिए, जब वाला मोड चालू हो जाता है).

    पुष्टि करने वाले आईडी को सेव करके रखा जा सकता है. सबसे आसान तरीका है कि UnityEngine.PlayerPrefs के साथ पुष्टि आईडी सेव करें.

अगर codeSent में पास किए गए कॉलबैक को कॉल किया जाता है, तो ये काम किए जा सकते हैं उपयोगकर्ता को एसएमएस में पुष्टि का कोड मिलने पर उसे टाइप करने के लिए कहें दिखाई देगा.

दूसरी ओर, अगर verificationCompleted के लिए कॉलबैक यह होता है कॉल किया है, तो अपने आप पुष्टि हो गई है और अब आपके पास PhoneAuthCredential, जिसके साथ नीचे बताए गए तरीके का इस्तेमाल किया जा सकता है.

पुष्टि करने के कोड से उपयोगकर्ता को साइन इन करें

जब उपयोगकर्ता, मैसेज (एसएमएस) से मिला पुष्टि करने वाला कोड आपके ऐप्लिकेशन पर भेज देगा इस मैसेज के लिए, PhoneAuthCredential बनाकर उपयोगकर्ता को साइन इन करने की अनुमति दें पुष्टि करने के लिए कोड और पुष्टि आईडी से ऑब्जेक्ट को भेजना और उसे पास करना FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync तक.

  1. उपयोगकर्ता से पुष्टि करने के लिए कोड पाएं.
  2. पुष्टि से Credential ऑब्जेक्ट बनाएं कोड और पुष्टि करने के लिए आईडी डालें.
    PhoneAuthCredential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. PhoneAuthCredential ऑब्जेक्ट वाले उपयोगकर्ता को साइन इन करें:
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task =&gt {
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " +
                       task.Exception);
        return;
      }
    
      FirebaseUser newUser = task.Result.User;
      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 प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. साथ ही, इसका इस्तेमाल आपके प्रोजेक्ट के हर ऐप्लिकेशन में हर उपयोगकर्ता के लिए उपलब्ध होता है. भले ही, उपयोगकर्ता किसी भी तरह से साइन इन करता हो.

  • अपने ऐप्लिकेशन में, उपयोगकर्ता की बुनियादी प्रोफ़ाइल जानकारी को 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;
    }
  • आपके Firebase Realtime Database और Cloud Storage में सुरक्षा के नियम, ये काम किए जा सकते हैं auth वैरिएबल से साइन-इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी पाएं, और इसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.

उपयोगकर्ताओं को, पुष्टि करने के एक से ज़्यादा तरीके का इस्तेमाल करके, अपने ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है पुष्टि करने वाले के क्रेडेंशियल जोड़कर मौजूदा उपयोगकर्ता खाते से लिंक किया जा सकता है.

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

auth.SignOut();