एकता में फायरबेस प्रमाणीकरण के साथ आरंभ करें

आप Firebase प्रमाणीकरण का उपयोग करके उपयोगकर्ताओं को एक या अधिक साइन-इन विधियों का उपयोग करके अपने गेम में साइन इन करने की अनुमति दे सकते हैं, जिसमें ईमेल पता और पासवर्ड साइन-इन और फ़ेडरेटेड पहचान प्रदाता जैसे Google साइन-इन और Facebook लॉगिन शामिल हैं। यह ट्यूटोरियल आपको अपने गेम में ईमेल पता और पासवर्ड साइन-इन जोड़ने का तरीका दिखाकर फायरबेस ऑथेंटिकेशन के साथ आरंभ करता है।

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

इससे पहले कि आप Firebase प्रमाणीकरण का उपयोग कर सकें, आपको निम्न की आवश्यकता होगी:

  • अपनी एकता परियोजना को पंजीकृत करें और इसे फायरबेस का उपयोग करने के लिए कॉन्फ़िगर करें।

    • यदि आपकी एकता परियोजना पहले से ही फायरबेस का उपयोग करती है, तो यह पहले से पंजीकृत है और फायरबेस के लिए कॉन्फ़िगर किया गया है।

    • यदि आपके पास यूनिटी प्रोजेक्ट नहीं है, तो आप एक नमूना ऐप डाउनलोड कर सकते हैं।

  • अपने यूनिटी प्रोजेक्ट में Firebase यूनिटी SDK (विशेष रूप से, FirebaseAuth.unitypackage ) जोड़ें।

ध्यान दें कि आपके यूनिटी प्रोजेक्ट में फायरबेस को जोड़ने में फायरबेस कंसोल और आपके ओपन यूनिटी प्रोजेक्ट दोनों में कार्य शामिल हैं (उदाहरण के लिए, आप कंसोल से फायरबेस कॉन्फिग फाइल डाउनलोड करते हैं, फिर उन्हें अपने यूनिटी प्रोजेक्ट में ले जाते हैं)।

नए उपयोगकर्ता साइन अप करें

एक फॉर्म बनाएं जो नए उपयोगकर्ताओं को उनके ईमेल पते और पासवर्ड का उपयोग करके आपके गेम में पंजीकरण करने की अनुमति देता है। जब कोई उपयोगकर्ता फ़ॉर्म को पूरा करता है, तो उपयोगकर्ता द्वारा प्रदान किए गए ईमेल पते और पासवर्ड को सत्यापित करें, फिर उन्हें CreateUserWithEmailAndPasswordAsync विधि में पास करें:

auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
    return;
  }

  // Firebase user has been created.
  Firebase.Auth.AuthResult result = task.Result;
  Debug.LogFormat("Firebase user created successfully: {0} ({1})",
      result.User.DisplayName, result.User.UserId);
});

मौजूदा उपयोगकर्ताओं में साइन इन करें

एक फॉर्म बनाएं जो मौजूदा उपयोगकर्ताओं को उनके ईमेल पते और पासवर्ड का उपयोग करके साइन इन करने की अनुमति देता है। जब कोई उपयोगकर्ता प्रपत्र पूरा करता है, तो SignInWithEmailAndPasswordAsync विधि को कॉल करें:

auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
    return;
  }

  Firebase.Auth.AuthResult result = task.Result;
  Debug.LogFormat("User signed in successfully: {0} ({1})",
      result.User.DisplayName, result.User.UserId);
});

प्रमाणीकरण स्थिति परिवर्तन इवेंट हैंडलर सेट करें और उपयोगकर्ता डेटा प्राप्त करें

साइन-इन और साइन-आउट ईवेंट का जवाब देने के लिए, इवेंट हैंडलर को ग्लोबल ऑथेंटिकेशन ऑब्जेक्ट से अटैच करें। जब भी उपयोगकर्ता की साइन-इन स्थिति बदलती है, इस हैंडलर को कॉल किया जाता है। चूंकि प्रमाणीकरण ऑब्जेक्ट पूरी तरह से प्रारंभ होने के बाद ही हैंडलर चलता है और किसी भी नेटवर्क कॉल के पूरा होने के बाद, यह साइन-इन किए गए उपयोगकर्ता के बारे में जानकारी प्राप्त करने का सबसे अच्छा स्थान है।

FirebaseAuth ऑब्जेक्ट के StateChanged फ़ील्ड का उपयोग करके इवेंट हैंडलर को पंजीकृत करें। जब कोई उपयोगकर्ता सफलतापूर्वक साइन इन करता है, तो आप ईवेंट हैंडलर में उपयोगकर्ता के बारे में जानकारी प्राप्त कर सकते हैं।

अंत में, जब इस ऑब्जेक्ट को Destroy कर दिया जाता है, तो यह स्वचालित रूप से OnDestroy को कॉल करेगा। OnDestroy में प्रामाणिक वस्तु के संदर्भों को साफ करें।

void InitializeFirebase() {
  auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth.StateChanged += AuthStateChanged;
  AuthStateChanged(this, null);
}

void AuthStateChanged(object sender, System.EventArgs eventArgs) {
  if (auth.CurrentUser != user) {
    bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
        && auth.CurrentUser.IsValid();
    if (!signedIn && user != null) {
      DebugLog("Signed out " + user.UserId);
    }
    user = auth.CurrentUser;
    if (signedIn) {
      DebugLog("Signed in " + user.UserId);
      displayName = user.DisplayName ?? "";
      emailAddress = user.Email ?? "";
      photoUrl = user.PhotoUrl ?? "";
    }
  }
}

void OnDestroy() {
  auth.StateChanged -= AuthStateChanged;
  auth = null;
}

अगले कदम

अन्य पहचान प्रदाताओं और अनाम अतिथि खातों के लिए समर्थन जोड़ने का तरीका जानें: