我不断收到“java.lang.IllegalArgumentException: Given String is empty or null”的错误提示,这与auth = FirebaseAuth.getInstance();有关。

3
我正在为用户在Firebase中进行注册制作一个简单的应用程序。我添加了两个editText以获取用户的电子邮件和密码,以及一个注册按钮。我已经添加了一个扩展Application类的类来初始化默认的firebaseApp。所有代码都在下面添加。请帮助我解决这个错误。

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

        EditText ed_email, ed_pass;
        Button but_signup;

        ProgressBar progressBar;
        FirebaseAuth auth;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //FirebaseApp.initializeApp(getApplicationContext());
            //Get Firebase auth instance
            auth = FirebaseAuth.getInstance();


            but_signup = (Button) findViewById(R.id.but_login);

            ed_email = (EditText) findViewById(R.id.ed_email);
            ed_pass = (EditText) findViewById(R.id.ed_pass);


            but_signup.setOnClickListener(this);
        }

        @Override
        protected void onResume() {
            super.onResume();
        }

        @Override
        public void onClick(View v) {
            String email = ed_email.getText().toString().trim();
            String password = ed_pass.getText().toString().trim();

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
                return;
            }

            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
                return;
            }

            if (password.length() < 6) {
                Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show();
                return;
            }


            //create user
            auth.createUserWithEmailAndPassword(email, password)
                    .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            Toast.makeText(MainActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();

                            if (!task.isSuccessful()) {
                                Toast.makeText(MainActivity.this, "Authentication failed." + task.getException(),
                                        Toast.LENGTH_SHORT).show();
                            } else {
                                startActivity(new Intent(MainActivity.this, MainActivity.class));
                                finish();
                            }
                        }
                    });
        }
    }

FireApp.java

public class FireApp extends Application {
@Override
public void onCreate() {
    super.onCreate();
    FirebaseApp.initializeApp(getApplicationContext());

}}

logcat

FATAL EXCEPTION: main
Process: com.skapsdevelopment.firebase, PID: 13582
Theme: themes:{default=overlay:com.resurrectionremix.pitchblack, iconPack:com.baranovgroup.nstyle, fontPkg:com.resurrectionremix.pitchblack, com.android.systemui=overlay:com.resurrectionremix.pitchblack, com.android.systemui.navbar=overlay:com.resurrectionremix.pitchblack}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.skapsdevelopment.firebase/com.skapsdevelopment.firebase.MainActivity}: java.lang.IllegalArgumentException: Given String is empty or null
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
   at android.app.ActivityThread.-wrap11(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5461)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
Caused by: java.lang.IllegalArgumentException: Given String is empty or null
   at com.google.android.gms.common.internal.zzac.zzhz(Unknown Source)
   at com.google.android.gms.internal.zzagt$zza$zza.<init>(Unknown Source)
   at com.google.firebase.auth.FirebaseAuth.zzb(Unknown Source)
   at com.google.firebase.auth.FirebaseAuth.<init>(Unknown Source)
   at com.google.android.gms.internal.zzahe.<init>(Unknown Source)
   at com.google.firebase.auth.FirebaseAuth.zzd(Unknown Source)
   at com.google.firebase.auth.FirebaseAuth.zzc(Unknown Source)
   at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source)
   at com.skapsdevelopment.firebase.MainActivity.onCreate(MainActivity.java:36)
   at android.app.Activity.performCreate(Activity.java:6251)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510) 
   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:148) 
   at android.app.ActivityThread.main(ActivityThread.java:5461) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132

请帮我解决这个错误。

将应用程序类添加到清单中。使用“this”而不是“getApplicationContext”。 - OneCricketeer
我已经在清单文件中添加了它。 - Subham Kaps
2个回答

1
当认证密钥字符串(通常称为Api密钥)未定义时,会出现此错误。因此,请检查google-services.json文件并将您的密钥放入current_key标签中。然后重新构建项目,以便应用程序使用API密钥。

0
对我来说问题是google_services.json中的api_key值为空。这是因为Firebase为我生成的默认json文件根本没有api_key值,所以我手动添加了一个使其正常工作。在此处添加一个随机字符串值将使codelab工作,但请确保停止当前运行并重新构建项目,否则Android Studio自动运行功能将在不更新正在使用的json文件的情况下运行。
您可以从/console.firebase.google.com/project-->您的项目-->设置-->常规中获取您的API密钥。
然后将其添加到您的google_services.json current_key中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接