स्पंदन फ़ायरबेस प्रामाणिक त्रुटि।

Jan 04 2021

प्रस्तावना

यह अब तक एक अच्छे के लिए संघर्ष रहा है और कुछ भी काम नहीं कर रहा है, मैंने यहां और यहां इसी तरह के सवालों के जवाब देखे हैं, लेकिन पूर्व में अव्यवस्था नहीं थी और बाद के बदलावों से पहले पोस्ट किया गया था firebase_authऔर मुझे सबसे महत्वपूर्ण लगता है प्रस्तावित समाधान काम नहीं किया है।

समस्या

समस्या स्पंदन के भीतर फायरबेस प्रमाणीकरण के एक बहुत ही सरल प्रारंभिक सेटअप की चिंता है। मैं वास्तव में मेरी firebase परियोजना की स्थापना के रूप में यह पता चलता है है यहाँ और इस्तेमाल किया इस और इस स्थापित करने के लिए firebase_auth

समस्या उत्पन्न करने वाला कोड निम्नानुसार है:

void _registerTestUser() async {
  try {
    UserCredential userCredential = await FirebaseAuth.instance
        .createUserWithEmailAndPassword(
            email: "[email protected]",
            password: "SuperSecretPassword!");
    print(userCredential.user.email);
  } on FirebaseAuthException catch (e) {
    if (e.code == 'weak-password') {
      print('The password provided is too weak.');
    } else if (e.code == 'email-already-in-use') {
      print('The account already exists for that email.');
    }
  } catch (e) {
    print(e);
  }
}

जब कोड त्रुटि चलाया जाता है

I / BiChannelGoogleApi (19546): [FirebaseAuth:] getGoogleApiForMethod () Gms: com.google.firebase.auth.api.internal.zz.@fb1556c

लौटा दिया जाता है।

यह उत्तर बताता है कि त्रुटि अच्छी तरह से अप्रासंगिक हो सकती है, अर्थात कोड वैसे भी काम कर सकता है। मैंने लाइन पर एक ब्रेकपॉइंट लगाया UserCredential userCredential = await FirebaseAuth.instanceऔर आगे बढ़ा, यह जारी है .createUserWithEmailAndPassword(, फिर एक बार फिर से आगे बढ़ने पर पहली लाइन पर वापस जाता है और त्रुटि प्रदर्शित होती है। पूरी तरह से फंक्शन से बाहर निकलने से पूरी तरह से टूट जाता है, इसलिए print(userCredential.user.email);लाइन को कभी भी निष्पादित नहीं किया जाता है, जो यह सुझाव देगा कि कोड काम नहीं कर रहा है। इसके अतिरिक्त print(e);लाइन में catchवह नहीं है जो इस त्रुटि को आउटपुट कर रहा है।

अन्य सूचना

Pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^0.5.3 #firebase core flutter sdk
  firebase_auth: ^0.18.4+1 #firebase authorisation

android / build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:3.5.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.3.4'  // Google Services plugin
}

android / app / build.gradle

apply plugin: 'com.google.gms.google-services'  // Google Services plugin

main.dart

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_auth/firebase_auth.dart';

FirebaseAuth auth = FirebaseAuth.instance;

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  final Future<FirebaseApp> _initialization = Firebase.initializeApp();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: FutureBuilder(
        // Initialize FlutterFire:
        future: _initialization,
        builder: (context, snapshot) {
          // Check for errors
          if (snapshot.hasError) {
            return Error();
          }

          // Once complete, show your application
          if (snapshot.connectionState == ConnectionState.done) {
            return MyHomePage();
          }

          // Otherwise, show something whilst waiting for initialization to complete
          return Loading();
        },
      ),
    );
  }
}

class Loading extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text('Firebase is loading'),
      ),
    );
  }
}

class Error extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text('There has been an error'),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  void _registerTestUser() async {
    try {
      UserCredential userCredential = await FirebaseAuth.instance
          .createUserWithEmailAndPassword(
              email: "[email protected]",
              password: "SuperSecretPassword!");
      print(userCredential.user.email);
    } on FirebaseAuthException catch (e) {
      if (e.code == 'weak-password') {
        print('The password provided is too weak.');
      } else if (e.code == 'email-already-in-use') {
        print('The account already exists for that email.');
      }
    } catch (e) {
      print(e);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('FlutterFire Test')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            RaisedButton(
              child: Text('Register a test user'),
              onPressed: () => _registerTestUser(),
              color: Colors.blue,
            ),
          ],
        ),
      ),
    );
  }
}

साथ ही यह त्रुटि कुछ समय के लिए प्रकट हुई है, हालाँकि यह उत्तर प्रतीत होता है कि इसका मेरे मुद्दे से कोई लेना-देना नहीं है और यह किसी समस्या का संकेत नहीं है।

W / ConnectionTracker (19240): java.lang.IllegalArgumentException: सेवा पंजीकृत नहीं है: lp @ fb1556c W / ConnectionTracker (19240): android.app.oadedApk.forgetServiceDispatcher (LoadedApk.java:1729) पर संपर्क करें। android.app.ContextImpl.unbindService (ContextImpl.java:1874) W / ConnectionTracker (19240): android.content.ContextWrapper.unbindService (ContextWrapper.java:792) W / ConnectionTracker (1940) में। । (150700-0): 2) डब्ल्यू / कनेक्शनटैकर (19240): lq.D पर (: com.google.android.gms.dynamite_measurementdynamite @ 204217100 @ 20.42.17 (150700-0): 10) W / ConnectionTracker (19240) : lc.a पर (: com.google.android.gms.dynamite_measurementdynamite @ 204217100 @ 20.42.17 (150700-0): 2) W / ConnectionTracker (19240): ee.run (: com.google.android.gms पर) .dynamite_measurementdynamite @ 204217100 @ 20.42.17 (150700-0): 3) डब्ल्यू / कनेक्शनटैकर (19240): java.util.concurrent.Executors पर $ RunnableAdapter.call (Executors.java:462) W / ConnectionTracker (19240): java.util.concurrent.FutureTask.run (FutureTask.java) पर। 266) डब्ल्यू / कनेक्शनटैकर (19240): ix.run पर (: com.google.android.gms.dynamite_measurementdynamite @ 204217100 @ 20.42.17 (150-0-0): 6)

संपादित करें

लाइन बदलने onPressed: () => _registerTestUser(),में main.dartकरने के लिए onPressed: () {_registerTestUser();}एक ही परिणाम देता है, लेकिन त्रुटि में परिवर्तन थोड़ा, zzao @ fb1556c हो जाता है zzao @ ebc85e9।

जवाब

GrahamD Jan 08 2021 at 19:24

जबकि सीधे आपके सवाल का जवाब नहीं दिया जा रहा है और जाहिरा तौर पर FlutterFire नमूना कोड के साथ (हालांकि बहुत अलग नहीं है)। यहाँ वह कोड है जिसका उपयोग मैं एक उपयोगकर्ता (Firebase_auth प्रकार उपयोगकर्ता) बनाने के लिए करता हूँ और मुझे आपकी त्रुटि नहीं दिखती है:

User _user = (await _firebaseAuth.createUserWithEmailAndPassword(
              email: email,
              password: password,
            )).user;

मैं तब इस तरह के तरीकों का उपयोग कर सकता हूं await _user.sendEmailVerification();और इसके गुणों का उपयोग कर सकता हूं जैसे कि _user.emailबिना मुद्दे के।

हो सकता है कि क्रेडेंशियल के बजाय कोशिश करें।

पुनश्च यह मुद्दा: W/ConnectionTracker(19240): java.lang.IllegalArgumentException: Service not registered:आप देखें कि यहां ट्रैक किया जा रहा है और मुझे विश्वास नहीं है कि यह आपके कोड से संबंधित है:https://github.com/firebase/firebase-android-sdk/issues/1662#issue-638324848

इसमें अपवाद कोड के कई रूप हैं लेकिन वे सभी संबंधित हैं।

अपडेट मैं यह भी मानता हूं कि @amit kumar लगभग सही है, आपFirebaseAuth auth = FirebaseAuth.instance;पहलेचल रहे हैंFirebase.initializeApp();। आपको मेरा विश्वास है कि FirebaseAuth को त्वरित करने से पहले आपको अपना भविष्य पूरा करना होगा। शायद मेरा परिवर्तित कोड अप्रासंगिक से ऊपर है।

AmitKumar Jan 05 2021 at 00:17

पहले के रूप में मैं देख सकता हूँ आप आरंभ नहीं किया है firebaseमें main.dartफ़ाइल सही।

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

आप एक बार फिर से कोशिश करने से चूक गए और अगर फिर भी आपको समस्या हुई तो मुझे बताएं

JamM.HernandezQuiceno Jan 12 2021 at 01:41

इसे आजमाइए:

  void _registerTestUser() async {
    try {
      await FirebaseAuth.instance
          .createUserWithEmailAndPassword(
              email: "[email protected]",
              password: "SuperSecretPassword!")
          .then((userCredential) => print(userCredential.user.email));
    } on FirebaseAuthException catch (e) {
      if (e.code == 'weak-password') {
        print('The password provided is too weak.');
      } else if (e.code == 'email-already-in-use') {
        print('The account already exists for that email.');
      }
    } catch (e) {
      print(e);
    }
  }

इसके अलावा UserCredential के बजाय उपयोगकर्ता का उपयोग करने पर विचार करें:

  void _registerTestUser() async {
    try {
      final User user = (await FirebaseAuth.instance
              .createUserWithEmailAndPassword(
                  email: "[email protected]",
                  password: "SuperSecretPassword!"))
          .user;

      print(user.email);
    } on FirebaseAuthException catch (e) {
      if (e.code == 'weak-password') {
        print('The password provided is too weak.');
      } else if (e.code == 'email-already-in-use') {
        print('The account already exists for that email.');
      }
    } catch (e) {
      print(e);
    }
  }
ChizaramSuccess Jan 12 2021 at 22:34
 final FirebaseAuth _auth = FirebaseAuth.instance;

        registerUser()async{
        _auth.createUserWithEmailAndPassword(
         email:"[email protected]",
         password: "SuperSecretPassword!",
        ).then((result){
User user = result.user;
}).catchError((e) {
          print(e);
        });
    }