Android Firebase进行身份验证

时间:2016-06-16 15:07:09

标签: android firebase firebase-authentication

我正在尝试使用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);
}

2 个答案:

答案 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()方法

中编写用户登录时的代码