2016-10-22 21 views
2

我做了一個簡單的應用程序用戶註冊在firebase中。兩個editText用於獲取用戶的電子郵件和密碼以及用於註冊的按鈕我已經添加了一個擴展Application的類來初始化默認的firebaseApp,所有的代碼都在下面添加,幫助我對這個錯誤進行排序。我不斷收到「java.lang.IllegalArgumentException:給定字符串爲空或空」,它與auth = FirebaseAuth.getInstance();「

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)  

請幫我解決這個錯誤。

+0

將應用程序類添加到清單。使用'this'而不是'getApplicationContext' –

+0

我已經在Manifest文件中添加了這個。 –

回答

0

我的問題是我的google_services.json中的api_key值爲空。這是因爲firebase爲我生成的默認json文件根本沒有api_key值,所以我只是手動添加一個文件以使其工作。在這裏添加一個隨機字符串值將使codelab工作,但確保停止當前運行並重建項目,否則Android Studio自動運行功能將運行而不更新正在使用的json文件。

您可以從中獲取您的api密鑰。 /console.firebase.google.com/project - >您的項目 - >設置 - >一般。

,並把它添加到您的google_services.json current_key

1

此錯誤的身份驗證密鑰字符串,俗稱API密鑰,沒有定義時出現。因此,請檢查google-services.json文件並將您的密鑰放在current_key標記中。並重新構建項目,以便應用程序使用api密鑰。

相關問題