Google login always fails at GoogleSignInResult

I need your help ... I have no idea!

I don’t understand why he fails every time.

  • I created OAuth 2.0 client identifiers.
  • I generated and moved the google-services.json folder to ./app .
  • The Google Cloud Console supports all Google APIs where they are activated.

Check out and if something hurts you ... Go on!

Yours faithfully

build.gradle:

 apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "sign.in.gogoleplusconnect" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.0' compile 'com.google.android.gms:play-services-auth:9.0.0' compile 'com.google.android.gms:play-services-identity:9.0.0' compile 'com.google.android.gms:play-services:9.0.0' } 

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="5dp" android:layout_centerHorizontal="true" android:text="Gogole Sign In" android:textSize="30sp" android:textColor="#000000"/> <com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/title" android:layout_margin="20dp" android:layout_marginTop="20dp"/> </RelativeLayout> 

MainActivity.java

 package sign.in.gogoleplusconnect; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import com.google.android.gms.auth.api.Auth; import com.google.android.gms.auth.api.signin.GoogleSignInAccount; import com.google.android.gms.auth.api.signin.GoogleSignInOptions; import com.google.android.gms.auth.api.signin.GoogleSignInResult; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.SignInButton; import com.google.android.gms.common.api.GoogleApiClient; public class MainActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener { private static final int RC_SIGN_IN = 9001; private GoogleSignInOptions gso; private GoogleApiClient mGoogleApiClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d("Logger", "onCreate:"); // Configure sign-in to request the user ID, email address, and basic // profile. ID and basic profile are included in DEFAULT_SIGN_IN. gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); // Build a GoogleApiClient with access to the Google Sign-In API and the // options specified by gso. mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); // Customize sign-in button. The sign-in button can be displayed in // multiple sizes and color schemes. It can also be contextually // rendered based on the requested scopes. For example. a red button may // be displayed when Google+ scopes are requested, but a white button // may be displayed when only basic profile is requested. Try adding the // Scopes.PLUS_LOGIN scope to the GoogleSignInOptions to see the // difference. SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button); signInButton.setSize(SignInButton.SIZE_STANDARD); signInButton.setScopes(gso.getScopeArray()); signInButton.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.sign_in_button: Log.d("Logger", "onClick:"); signIn(); break; } } private void signIn() { Log.d("Logger", "signIn:"); Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 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) { Log.d("Logger", "onActivityResult:RC_SIGN_IN : " + RC_SIGN_IN); GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); handleSignInResult(result); } } private void handleSignInResult(GoogleSignInResult result) { Log.d("Logger", "handleSignInResult:" + result.isSuccess()); if (result.isSuccess()) { Log.d("Logger", "handleSignInResult : Success"); // Signed in successfully, show authenticated UI. GoogleSignInAccount acct = result.getSignInAccount(); Log.d("Logger", "" + acct.getDisplayName()); Log.d("Logger", "" + acct.getEmail()); Log.d("Logger", "" + acct.getPhotoUrl()); Log.d("Logger", "" + acct.getId()); } else { // Signed out, show unauthenticated UI. Log.d("Logger", "handleSignInResult : Fail"); } } @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.d("Logger", "onConnectionFailed : Fail"); } } 

Logcat.log

 07-15 16:06:27.817 21424-21424/sign.in.gogoleplusconnect D/Logger: onCreate: 07-15 16:06:30.053 21424-21424/sign.in.gogoleplusconnect D/Logger: onClick: 07-15 16:06:30.055 21424-21424/sign.in.gogoleplusconnect D/Logger: signIn: 07-15 16:06:32.872 21424-21424/sign.in.gogoleplusconnect D/Logger: onActivityResult:RC_SIGN_IN : 9001 07-15 16:06:32.879 21424-21424/sign.in.gogoleplusconnect D/Logger: handleSignInResult:false 07-15 16:06:32.879 21424-21424/sign.in.gogoleplusconnect D/Logger: handleSignInResult : Fail 
+7
source share
2 answers

From your code replace

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

with this:

 gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken("web client id from console.developers.google.com for the app") .requestEmail() .build(); 

Hope this helps someone. Also, using firebase Signin is much easier. Check out the link . Thanks

0
source

For me, this happened when the application was signed with the wrong certificate, the SHA-1 certificate must be registered in the Google console.

For the debug build option, you can also add your debug certificate to the Google console or configure build.gradle for the debug option to use the same certificate that you registered in the console.

0
source

All Articles