0

I am trying to integrate Google Sign In in my Android app using Firebase Authentication. When I build using the project files, it fails with a Error PlatformException(Google sign in failed, com.google.android.gms.common.api.ApiException: 12500)

W/: Google sign in failed
    com.google.android.gms.common.api.ApiException: 12500: 
        at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(com.google.android.gms:play-services-base@@17.1.0:4)
        at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source:8)
        at com.example.schooltest.login.LoginActivity.onActivityResult(LoginActivity.java:193)
        at android.app.Activity.dispatchActivityResult(Activity.java:7797)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5071)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5120)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
        at android.os.Handler.dispatchMessage(Handler.java:112)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
D/ZrHung.AppEyeUiProbe: notify runnable to start.
W/InputMethodManager: startInputReason = 1
D/ViewRootImpl[SignInHubActivity]: surface should not be released
D/ActivityThread: Remove activity client record, r= ActivityRecord{d8c4888 token=android.os.BinderProxy@11f2b96 {com.example.schooltest/com.google.android.gms.auth.api.signin.internal.SignInHubActivity}} token= android.os.BinderProxy@11f2b96
E/ion: ioctl c0044901 failed with code -1: Invalid argument

Code

public class LoginActivity extends AppCompatActivity {


    private static final String TAG = "";
    private static final int RC_SIGN_IN = 9001;

    private EditText inputEmail, inputPassword;
    private FirebaseAuth mAuth;
    private ProgressBar progressBar;
    private View mViewHelper;

    GoogleSignInButton button;
    GoogleSignInClient mGoogleSignInClient;
    FirebaseAuth.AuthStateListener mAuthListner;

    @Override
    protected void onStart() {

        super.onStart();

        mAuth.addAuthStateListener(mAuthListner);

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mAuth = FirebaseAuth.getInstance();

        //check the current user
        if (mAuth.getCurrentUser() != null) {
            startActivity(new Intent(LoginActivity.this, MainActivity.class));
            finish();
        }

        setContentView(R.layout.activity_login);

        inputEmail = (EditText) findViewById(R.id.et_email_address);
        inputPassword = (EditText) findViewById(R.id.et_password);
        final Button ahlogin = (Button) findViewById(R.id.login_btn);
        progressBar = (ProgressBar) findViewById(R.id.loading_spinner);
        TextView btnForgot = findViewById(R.id.forgot);
        TextView btnSignUp = (TextView) findViewById(R.id.signup_here_Button);
        button = (GoogleSignInButton) findViewById(R.id.login_google_btn);
        mViewHelper = findViewById(R.id.view_helper);


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signIn();
            }
        });


        btnSignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, SignupActivity.class));
            }
        });

        btnForgot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, ResetPasswordActivity.class));
            }
        });


        mAuth = FirebaseAuth.getInstance();

        // Checking the email id and password is Empty
        ahlogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = inputEmail.getText().toString();
                final String password = inputPassword.getText().toString();
                if (TextUtils.isEmpty(email)) {
                    Toast.makeText(getApplicationContext(), "Email is required.", Toast.LENGTH_SHORT).show();
                    return;
                }
                if (TextUtils.isEmpty(password)) {
                    Toast.makeText(getApplicationContext(), "Enter Password", Toast.LENGTH_SHORT).show();
                    return;
                }
                if(password.length() < 6) {
                    inputPassword.setError("Password Must be >= 6 Characters");
                    return;
                }

                progressBar.setVisibility(View.VISIBLE);
                mViewHelper.setVisibility(View.VISIBLE);
                ahlogin.setVisibility(View.INVISIBLE);


                //authenticate user
                mAuth.signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {

                                progressBar.setVisibility(View.GONE);
                                mViewHelper.setVisibility(View.INVISIBLE);
                                ahlogin.setVisibility(View.VISIBLE);

                                if (task.isSuccessful()) {
                                    // there was an error
                                    Log.d(TAG, "signInWithEmail:success");
                                    Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                                    startActivity(intent);
                                    finish();

                                } else {
                                    Log.d(TAG, "singInWithEmail:Fail");
                                    Toast.makeText(LoginActivity.this, getString(R.string.failed), Toast.LENGTH_LONG).show();
                                }
                            }

                        });
            }

        });


        mAuthListner = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if (firebaseAuth.getCurrentUser() != null) {
                    startActivity(new Intent(LoginActivity.this, MainActivity.class));
                }

            }
        };

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken("430102477506-fd3ag36cgusb4lgdhb5d0ih6qbmjegoi.apps.googleusercontent.com")
                .requestEmail()
                .build();

        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);


    }


    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
                // Google Sign In was successful, authenticate with Firebase
                GoogleSignInAccount account = task.getResult(ApiException.class);
                firebaseAuthWithGoogle(account);
            } catch (ApiException e) {

                // Google Sign In failed, update UI appropriately
                Log.w(TAG, "Google sign in failed", e);
                // ...
            }
        }
    }

    private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
        AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            Log.d(TAG, "signInWithCredential:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            //updateUI(user);
                        } else {
                            // If sign in fails, display a message to the user.
                            Log.w(TAG, "signInWithCredential:failure", task.getException());
                            Toast.makeText(LoginActivity.this, "Aut Fail", Toast.LENGTH_SHORT).show();
                            //updateUI(null);
                        }

                        // ...
                    }
                });
    }

}

what could be the possible cause of this? Or could it be something to do with the SHA-1 ?

Thanks

Doug Stevenson
  • 297,357
  • 32
  • 422
  • 441
Wael Jomni
  • 361
  • 1
  • 9
  • please checker here [link](https://stackoverflow.com/questions/47632035/google-sign-in-error-12500) – Hasan Khan Mar 13 '20 at 06:35
  • This is not the issue in my case. The Google Play services are already up to date. I'm using a Huawei device. – Wael Jomni Mar 13 '20 at 06:38
  • add support email in firebase and recheck SHA1. – Hasan Khan Mar 13 '20 at 06:39
  • I strongly suggesting doing a web search on the error message before posting to Stack Overflow. – Doug Stevenson Mar 13 '20 at 06:40
  • I already added a support email. @DougStevenson I already looked into those answers before posting https://stackoverflow.com/questions/47632035/google-sign-in-error-12500 and this : https://stackoverflow.com/questions/45912182/google-sign-in-not-working-when-built-in-my-android-studio But none of them worked – Wael Jomni Mar 13 '20 at 06:42
  • Then contact Firebase support directly. If you find a solution that's different than the many answers to the many questions with this exact same error, then post it as an answer to those questions. https://support.google.com/firebase/contact/support – Doug Stevenson Mar 13 '20 at 06:49

0 Answers0