我正在尝试使用Firebase身份验证使用Facebook个人资料,但我在运行代码时遇到错误:
java.lang.IllegalStateException:名称为[DEFAULT]的FirebaseApp不存在。
这是我的代码。有人可以帮我解决这个问题吗?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkFullscreen();
setContentView(R.layout.activity_sign_in);
callbackManager = CallbackManager.Factory.create();
mAuth = FirebaseAuth.getInstance();
facebookSignIn = (Button) findViewById(R.id.facebook_sing_in);
facebookSignIn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.facebook_sing_in:
{
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookToken(loginResult.getAccessToken());
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile","email"));
break;
}
}
}
private void handleFacebookToken(AccessToken token) {
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
答案 0 :(得分:1)
不要担心此异常(java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist)
。因为,这是一个firebase错误。您的应用程序不会出现任何问题,请忘记此异常。
答案 1 :(得分:0)
这适用于使用Firebase进行Facebook登录
LoginManager mLoginManager;
//Firebase Variables
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
private CallbackManager mCallbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
mAuth = FirebaseAuth.getInstance();
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
updateUI(user);
}
};
mCallbackManager = CallbackManager.Factory.create();
btnFacebookSignIn = (LoginButton) findViewById(R.id.button_facebook_signin);
btnFacebookSignIn.setReadPermissions("email","public_profile");
btnFacebookSignIn.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
// [START onactivityresult]
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
private void handleFacebookAccessToken(AccessToken token) {
// ...
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(LoginActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
private void updateUI(FirebaseUser user) {
if (user != null) {
}
}
}
在 updateUi()方法
中编写用户登录时的代码