tccpg288
tccpg288

Reputation: 3352

Firebase AuthUI - Uknown Error Code

I am using the Firebase AuthUI to sign in to my application, specifically with Facebook. I have verified within my console that my sign in was successful, as I see the user added.

However, my callback method is not triggering, I have toasts implemented and I do not know why the success method is not being called. I have logged the error code and do not know what issue it signifies. Am I capturing the error correctly? It is generating -1, which I do not see in the Firebase AuthUI docs:

public class LoginActivity extends AppCompatActivity {

private static final int RC_SIGN_IN = 123;
private static final String USERS = "Users";


private FirebaseAuth mAuth;


FirebaseDatabase mBaseRef;
DatabaseReference mUserRef;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    mAuth = FirebaseAuth.getInstance();


    mBaseRef = FirebaseDatabase.getInstance();
    mUserRef = mBaseRef.getReference(USERS);


    startActivityForResult(AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setAvailableProviders(Arrays.asList(
                    new AuthUI.IdpConfig.EmailBuilder().build(),
                    new AuthUI.IdpConfig.GoogleBuilder().build(),
                    new AuthUI.IdpConfig.FacebookBuilder().build()))
            .build(), RC_SIGN_IN);

}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // RC_SIGN_IN is the request code you passed into startActivityForResult(...) when starting the sign in flow.
    if (requestCode == RC_SIGN_IN) {


        IdpResponse response = IdpResponse.fromResultIntent(data);

        Log.v("RESPONSE", String.valueOf(response.getErrorCode()));


        // Successfully signed in
        if (resultCode == RESULT_OK) {
            Toast.makeText(getApplicationContext(), "SIGNED IN SUCCESSFULLY", Toast.LENGTH_LONG).show();


            if (mAuth.getCurrentUser() != null) {
                HashMap<String, Object> map = new HashMap<>();
                map.put("TEST USER ", mAuth.getCurrentUser());
                mUserRef.push().updateChildren(map);
                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);
                finish();
            } else {
                //not signed in
                Toast.makeText(getApplicationContext(), "SIGN IN FAILED", Toast.LENGTH_LONG).show();
                return;
            }
        } else {
            // Sign in failed
            if (response == null) {
                // User pressed back button
                Toast.makeText(getApplicationContext(), "SIGN IN CANCELLED", Toast.LENGTH_LONG).show();
                return;
            }

            if (response.getErrorCode() == ErrorCodes.NO_NETWORK) {
                Toast.makeText(getApplicationContext(), "NO INTERNET CONNECTION", Toast.LENGTH_LONG).show();
                return;
            }

            if (response.getErrorCode() == ErrorCodes.UNKNOWN_ERROR) {
                Toast.makeText(getApplicationContext(), "UNKNOWN ERROR", Toast.LENGTH_LONG).show();
                return;
            }
         }

      }
    }

 }

EDIT: I have added the complete activity enter image description here

EDIT: My log is running very quickly and then the error is automatically deleting before I can read it, it might actually be a StackOverflow.

Upvotes: 1

Views: 961

Answers (1)

SUPERCILEX
SUPERCILEX

Reputation: 4007

The error code is only valid if an error actually occurred by checking the onActivityResult result code, otherwise it just returns -1 (Activity.RESULT_OK) as you've noticed. Here's an example from the sample:

private void handleSignInResponse(int resultCode, Intent data) {
    IdpResponse response = IdpResponse.fromResultIntent(data);

    // Successfully signed in
    if (resultCode == RESULT_OK) {
        startSignedInActivity(response);
        finish();
    } else {
        // Sign in failed
        if (response == null) {
            // User pressed back button
            showSnackbar(R.string.sign_in_cancelled);
            return;
        }

        if (response.getError().getErrorCode() == ErrorCodes.NO_NETWORK) {
            showSnackbar(R.string.no_internet_connection);
            return;
        }

        showSnackbar(R.string.unknown_error);
        Log.e(TAG, "Sign-in error: ", response.getError());
    }
}

Upvotes: 2

Related Questions