मैं स्पंदन वेब ऐप में पासवर्ड-कम लॉगिन लागू करने का प्रयास कर रहा हूं। मैंने प्रामाणिक स्थिति की निगरानी के लिए एक StreamBuilder विजेट का उपयोग किया।

          child: StreamBuilder<FirebaseUser>(
            stream: FirebaseAuth.instance.onAuthStateChanged,
            builder: (context, snapshot) {
              print("AuthStateChanged");
              print(snapshot.connectionState);
              if (snapshot.connectionState == ConnectionState.active) {
                print("Connection Active");
                FirebaseUser user = snapshot.data;
                if (user == null) {
                  return LoginPage();
                }
                return LoggedIn();
              } else {
                print("Connection Inactive"); //Connection Inactive, show error dialog
                return Text("***");
              }
            },
          ),

मैंने फायरबेस में एक डायनामिक लिंक बनाया है, https://mypwakk.page.link/6SuK जो एक html की ओर इशारा करता है जो उपयोगकर्ता को ऐप पर वापस जाने के लिए कहता है।

<!DOCTYPE html>
<html>
  <head>
    <title>Sign in via email</title>
  </head>
  <body>
      <h1>You now have signed in.</h1>
      <p>Go back to the same device you opened the app from and continue using the app as an authenticated user.</p>
  </body>
</html>

फिर FirebaseAuth.instance.signInWithEmailAndLink() का उपयोग करके साइनइन लिंक भेजा गया था

जब ईमेल में लिंक प्राप्त हुआ, तो मैंने उस पर क्लिक किया और यह मुझे html पृष्ठ पर ले गया। इस बिंदु पर मुझे उम्मीद थी कि मेरे StreamBuilder और हैंडलर प्रिंट डिबग संदेश में स्थिति बदल जाएगी। लेकिन मुझे कंसोल पर कुछ भी छपा हुआ नहीं दिख रहा है।

क्या मैं कुछ भूल रहा हूँ? किसी भी प्रकार की सहायता सराहनीय होगी।

0
kibudude 27 फरवरी 2020, 18:47
यदि उपयोगकर्ता ने ऐप के किसी भिन्न इंस्टेंस में साइन इन किया था, तो केवल उस इंस्टेंस में साइन इन किया जाएगा। यह सुनिश्चित करने के लिए कि आपका onAuthStateChanged सक्रिय हो, सुनिश्चित करें कि लिंक ऐप में खोला गया है। उदाहरण जिसमें FirebaseAuth.instance.onAuthStateChanged श्रोता है।
 – 
Frank van Puffelen
27 फरवरी 2020, 19:04
हाय @FrankvanPuffelen, यह वही उदाहरण है। यह क्रोम में खुला था जबकि ईमेल भेजा गया था और लिंक पर क्लिक किया गया था।
 – 
kibudude
27 फरवरी 2020, 20:53
हम्म... मैं उस मामले में onAuthStateChanged के सक्रिय होने की अपेक्षा करता हूं, लेकिन मुझे यह स्वीकार करना चाहिए कि मैंने Flutter Web के साथ कभी प्रयास नहीं किया। यदि आप currentUser की जांच के लिए बाध्य करते हैं, तो क्या वास्तव में वहां की स्थिति को उठाया गया है? यदि ऐसा है, तो यह कम से कम श्रोता के साथ एक समस्या होगी।
 – 
Frank van Puffelen
27 फरवरी 2020, 20:57
onPressed: () async { FirebaseUser user = await FirebaseAuth.instance.currentUser(); print(user.toString()); } के साथ एक बटन जोड़ा गया, जिससे null मिल रहा है। तो यह श्रोता के साथ कोई समस्या नहीं है।
 – 
kibudude
27 फरवरी 2020, 22:20

1 उत्तर

सबसे बढ़िया उत्तर

डायनामिक लिंक के साथ कुछ प्रयोग के बाद मैंने इस मुद्दे को हल कर लिया है।

मैंने क्या गलत किया है,

  • लिंक क्लिक को संभालने के लिए एक html पेज बनाया।
  • एक डायनामिक लिंक डोमेन बनाया।
  • एक गतिशील लिंक बनाया जो एचटीएमएल पेज यूआरएल को इंगित करता है।
  • जब मैंने ईमेल लिंक भेजा था तो actionCodeSettings को url पैरामीटर के रूप में डायनामिक लिंक प्रदान किया था।

मुझे क्या करना चाहिए था,

  • लिंक क्लिक को हैंडल करने के लिए एक html पेज बनाएं। क्लिक सत्यापन और लॉगिन प्रक्रिया करने के लिए जावा-स्क्रिप्ट हैंडलर जोड़ें।
  • एक डायनामिक लिंक डोमेन बनाएं।
  • जब मैंने ईमेल लिंक भेजा तो html पृष्ठ url को url पैरामीटर के रूप में और डायनामिक लिंक डोमेन को dynamicLinkDomain पैरामीटर के रूप में actionCodeSettings प्रदान करें।

देखें, https://firebase.google.com/ docs/auth/web/email-link-auth#completing_sign-in_in_a_web_page. दस्तावेज़ीकरण प्रक्रिया को निर्दिष्ट करता है लेकिन स्पंदन भूमि से आ रहा है, इसे स्पंदन वेब लक्ष्य में अनुवाद करना मेरे लिए कुछ हद तक अस्पष्ट था। उम्मीद है कि भविष्य में स्पंदन वेब लक्ष्य के लिए कुछ स्पष्ट नमूना कोड उपलब्ध होंगे।

0
kibudude 20 मार्च 2020, 02:39