I need your help... I have no idea anymore !
I dont understand why it fail everytime.
google-services.json
into ./app
folder.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
For me it happened when app was signed with improper certificate, the certificate SHA-1 must be registered in Google Console.
For Debug build variant you may want to add your debug cert to Google Console as well, or configure build.gradle for debug variant to use the same certificate you registered in the console.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With