Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Sign in but result code is 0

I want to create a Google sign for my app but my result code from onActivityResult() is 0

In my onCreate() Method I start the function startSignInIntent() like this:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //some other stuff
        view.loadUrl(myURL);
        startSignInIntent();
}

This is the startSignInIntent()

private void startSignInIntent() {
        GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
                GoogleSignInOptions.DEFAULT_SIGN_IN);
        Intent intent = signInClient.getSignInIntent();
        startActivityForResult(intent, RC_SIGN_IN);
    }

This is the onActivityResult()

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.d(TAG, "data : " + resultCode + " | " + data  + " || " + RC_SIGN_IN + " ||| " + requestCode);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if (result.isSuccess()) {
                // The signed in account is stored in the result.
                GoogleSignInAccount signedInAccount = result.getSignInAccount();
            } else {
                String message = result.getStatus().getStatusMessage();
                if (message == null || message.isEmpty()) {
                    Toast.makeText(this, "Login failed", Toast.LENGTH_LONG).show();
                }
                new AlertDialog.Builder(this).setMessage(message)
                        .setNeutralButton(android.R.string.ok, null).show();
            }
        }

This the result of the log in the function onActivityResult()

0 | Intent { (has extras) } || 2 ||| 2

After I select an account of the the pop-up where I can choose my account. I get this screen with ok but when I have that the login already failed. See photo: enter image description here

like image 342
Steven Avatar asked Nov 17 '17 18:11

Steven


3 Answers

Make sure to set the publishing status of your OAuth consent screen to In Production status instead of Testing status.

like image 83
Abel Stuker Avatar answered Oct 22 '22 20:10

Abel Stuker


I've had the same bug, requestCode was always 0 (RESULT_CANCELED).

Decision was to enable google sign in in firebase console.

Firebase console -> Your project -> Authentication -> Providers -> Google -> and switch it on.

In my case link was like this

https://console.firebase.google.com/u/0/project/{PROJECT NAME}/authentication/providers

like image 17
Eugene P. Avatar answered Oct 22 '22 20:10

Eugene P.


Try checking if you have the correct OAuth key properly configured for your app. According to this related SO post, the OP noticed that the Auth key is also associated with other project that create the issue.

Also you can check the following implementation of Try Sign-In for Android, for code implementation:

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

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        handleSignInResult(task);
    }
}

Also, some additional information provided by OP, you need to make sure you have signed the APK when you are testing it. See the documentation about Sign Your App for detailed information about it.

Hope this helps.

like image 10
Mr.Rebot Avatar answered Oct 22 '22 19:10

Mr.Rebot