title: Android : Google Sign In GoogleApiClient.connect()
body: <p>the following code is copied from www.developers.google.com</p>
  
  <p>i want to implement Google Sign In functionality, but unable to do so. when i click on SignIn Button it asks for permission and does some searching then Nothing happens, if i call GoogleApiClient.isConnected() it returns false.</p>
  
  <p>i have imported BaseGameUtils and also added line: compile project(':BaseGameUtils')</p>
  
  <p>app_id is generated using sha1 through:
  keytool -exportcert -alias androiddebugkey -keystore C:\Users\usman\.android\debug.keystore -list -v</p>
  
  <pre><code>public class MenuActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {
      boolean mExplicitSignOut = false;
      boolean mInSignInFlow = false; // set to true when you're in the middle of the
      // sign in flow, to know you should not attempt
      // to connect in onStart()
      GoogleApiClient mGoogleApiClient;  // initialized in onCreate
      private static int RC_SIGN_IN = 9001;
      private boolean mResolvingConnectionFailure = false;
      private boolean mAutoStartSignInFlow = true;
      private boolean mSignInClicked = false;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main_menu);
          findViewById(R.id.sign_in_button).setOnClickListener(this);
          findViewById(R.id.sign_out_button).setOnClickListener(this);
  
          // Create the Google Api Client with access to the Play Game and Drive services.
          mGoogleApiClient = new GoogleApiClient.Builder(this)
                  .addConnectionCallbacks(this)
                  .addOnConnectionFailedListener(this)
                  .addApi(Games.API).addScope(Games.SCOPE_GAMES)
                  .addApi(Drive.API).addScope(Drive.SCOPE_APPFOLDER) // Drive API
                  .build();
      }
  
      @Override
      protected void onStart() {
          super.onStart();
          if (!mInSignInFlow &amp;&amp; !mExplicitSignOut) {
              // auto sign in
              //mGoogleApiClient.connect();
          }
      }
  
  
  
      @Override
      protected void onStop() {
          super.onStop();
          mGoogleApiClient.disconnect();
      }
  
      @Override
      public void onConnected(Bundle connectionHint) {
          findViewById(R.id.sign_in_button).setVisibility(View.GONE);
          findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
      }
  
  
  
      @Override
      public void onConnectionFailed(ConnectionResult connectionResult) {
          if (mResolvingConnectionFailure) {
              // Already resolving
              return;
          }
  
          if (mSignInClicked || mAutoStartSignInFlow) {
              mAutoStartSignInFlow = false;
              mSignInClicked = false;
              mResolvingConnectionFailure = true;
  
              if (!BaseGameUtils.resolveConnectionFailure(this, mGoogleApiClient, connectionResult, RC_SIGN_IN, "signin_other_error")) //R.string.signin_other_error
              {
                  mResolvingConnectionFailure = false;
              }
          }
  
          // Put code here to display the sign-in button
      }
  
      @Override
      public void onConnectionSuspended(int i) {
          // Attempt to reconnect
          mGoogleApiClient.connect();
      }
  
      protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
          if (requestCode == RC_SIGN_IN) {
              mSignInClicked = false;
              mResolvingConnectionFailure = false;
              if (resultCode == RESULT_OK) {
                  mGoogleApiClient.connect();
              } else {
                  BaseGameUtils.showActivityResultError(this, requestCode, resultCode, 404); //R.string.signin_failure
              }
          }
      }
  
      // Call when the sign-in button is clicked
      private void signInClicked() {
          mSignInClicked = true;
          mGoogleApiClient.connect();
      }
  
      // Call when the sign-out button is clicked
      private void signOutclicked() {
          mSignInClicked = false;
          Games.signOut(mGoogleApiClient);
      }
  
      @Override
      public void onClick(View view) {
          if (view.getId() == R.id.sign_out_button) {
              // user explicitly signed out, so turn off auto sign in
              mExplicitSignOut = true;
              if (mGoogleApiClient != null &amp;&amp; mGoogleApiClient.isConnected()) {
                  Games.signOut(mGoogleApiClient);
                  mGoogleApiClient.disconnect();
              }
          }
  
          if (view.getId() == R.id.sign_in_button) {
              // start the asynchronous sign in flow
              mSignInClicked = true;
              System.out.println("Calling Method: mGoogleApiClient.connect( )\n");
              mGoogleApiClient.connect();
          }
          else if (view.getId() == R.id.sign_out_button) {
              mSignInClicked = false;
              Games.signOut(mGoogleApiClient);
  
              findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
              findViewById(R.id.sign_out_button).setVisibility(View.GONE);
          }
      }
  }
  </code></pre>
  
  <p>Manifest:</p>
  
  <pre><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.gsignin"&gt;
  
      &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
      &lt;uses-permission android:name="android.permission.GET_ACCOUNTS" /&gt;
      &lt;uses-permission android:name="android.permission.USE_CREDENTIALS" /&gt;
  
      &lt;application android:allowBackup="true" android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme"&gt;
  
      &lt;meta-data android:name="com.google.android.gms.appstate.APP_ID" android:value="@string/app_id" /&gt;
      &lt;meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" /&gt;
      &lt;meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /&gt;
  
      &lt;activity android:name="com.example.gsignin.Splash" android:label="@string/app_name" android:screenOrientation="portrait"&gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.MAIN"/&gt;
              &lt;category android:name="android.intent.category.LAUNCHER"/&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
  
      &lt;activity android:name="com.example.gsignin.MenuActivity" android:label="@string/app_name" android:screenOrientation="portrait"&gt;
          &lt;intent-filter&gt;
              &lt;action android:name="com.example.gsignin.MenuActivity"/&gt;
              &lt;category android:name="android.intent.category.DEFAULT"/&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
  
      &lt;/application&gt;
  &lt;/manifest&gt;
  </code></pre>