museehomme museehomme - 1 month ago 15
Android Question

Google Sign-in always fail on GoogleSignInResult

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

I dont understand why it fail everytime.


  • I generated the ID clients OAuth 2.0.

  • I have generated and move the
    google-services.json
    into
    ./app
    folder.

  • By the Google Cloud Console, all Google API where activated.



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

Kind regards

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's 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

Answer

I have created a full working example at github :

https://github.com/kadymuhammad/SignIn-with-Google-Demo