Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google sign in not working android?

So an issue my project has encountered is that the sign in through google does not work consistently. Ie, it works for my friend and not me from my computer, even though it worked for me yesterday before wiping my phone (phone got corrupted). Our login code is the standard for google sign in, and the problem is that the result keeps returning false I think. the code:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome_screen);
        findViewById(R.id.sign_in_button).setOnClickListener(this);

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
        signInButton.setSize(SignInButton.SIZE_STANDARD);
        signInButton.setScopes(gso.getScopeArray());

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
        }
    }   

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

    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) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        }
    }

    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            // Signed in successfully, show authenticated UI.
            GoogleSignInAccount acct = result.getSignInAccount();

//            mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName()));
            updateUI(acct);
        } else {
            // Signed out, show unauthenticated UI.
            noUpdateUI();
        }
    }

    private void updateUI(GoogleSignInAccount acct) {
        Intent intent = new Intent(getApplicationContext(), HomeScreen.class);

        Bundle bundle = new Bundle();
        bundle.putSerializable("NEW_USER", new ClientUser(acct));
        intent.putExtras(bundle);

        startActivity(intent);
    }


For some reason, the result is false:

    private void noUpdateUI() {
        System.out.println("**** Try again****");
//        mStatusTextView.setText(R.string.signed_out);
        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
    }

I think I have set up my app's credentials correctly, as it worked previously from my desktop before I wiped my phone. Of note, my friend had the same issue working from his laptop, but does not have the issue working from his desktop. Not sure what's up; any suggestions?

The log from sys.out:

12-16 18:48:43.282 27375-27375/oose2017.place2b D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
12-16 18:48:43.412 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_launch_request id:oose2017.place2b time:3231784
12-16 18:48:43.452 27375-27375/oose2017.place2b D/Activity: performCreate Call Injection manager
12-16 18:48:43.462 27375-27375/oose2017.place2b I/InjectionManager: dispatchOnViewCreated > Target : com.google.android.gms.auth.api.signin.internal.SignInHubActivity isFragment :false
12-16 18:48:43.462 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* installDecor mIsFloating : false
12-16 18:48:43.462 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* installDecor flags : 8454400
12-16 18:48:43.462 27375-27375/oose2017.place2b D/SecWifiDisplayUtil: Metadata value : SecSettings2
12-16 18:48:43.472 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* isFloatingMenuEnabled mFloatingMenuBtn : null
12-16 18:48:43.472 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* isFloatingMenuEnabled return false
12-16 18:48:43.482 27375-27375/oose2017.place2b D/SRIB_DCS: log_dcs ThreadedRenderer::initialize entered! 
12-16 18:48:43.492 27375-27584/oose2017.place2b D/mali_winsys: new_window_surface returns 0x3000,  [1440x2560]-format:1
12-16 18:48:43.542 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@174719e3 time:3231916
12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{1458bd29 token=android.os.BinderProxy@e9978a8 {oose2017.place2b/oose2017.place2b.interfaces.Welcome.WelcomeScreen}} show : true
12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{d3e4299 token=android.os.BinderProxy@174719e3 {oose2017.place2b/com.google.android.gms.auth.api.signin.internal.SignInHubActivity}} show : true
12-16 18:48:48.102 27375-27375/oose2017.place2b I/System.out: ***** Try again!*****
12-16 18:48:48.132 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@e9978a8 time:3236507
like image 392
Eric Avatar asked Dec 16 '15 23:12

Eric


2 Answers

I had the same problem. I solved it by doing the following:

  1. I went to my build.gradle(app), inside defaultConfig and changed the applicationId to my package name (I dont know why it wasnt the same initially). I switched from compile 'com.google.android.gms:play-services-auth:8.3.0' to compile 'com.google.android.gms:play-services-auth:8.4.0' Make sure apply plugin: 'com.google.gms.google-services' is at the bottom of your build.gradle(app) i.e after the dependencies

  2. I generated a new SHA-1 key. To generate SHA-1 key paste this in your terminal: keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android then go to your credentials page and select your project.

  3. under OAuth 2.0 client, click your android client key. paste the SHA-1 key you generated and your package name as directed. click save.

    1. download a new google-services.json file and paste it into your app/ directory.

Then try signing in again. Hopefully it should work. For more info, see this post and this as well. It helped me solve mine

like image 67
NezSpencer Avatar answered Oct 04 '22 08:10

NezSpencer


I had same problem in my project and solved my generating SHA1 key

Step1- open gradle on right side

Step2- click on Execute Gradle Task as on the image

Step3- write gradle signingreport and press Enter

enter image description here

Step4- Copy the SHA1 key enter image description here

Step5 - Go to your firebase console and go to project setting enter image description here

Step6 - On your SDK setup and configuration click on Add fingerprint and paste your SHA1 key here and click save enter image description here

And then it worked

like image 33
Shivam Goel Avatar answered Oct 04 '22 10:10

Shivam Goel