title: Google Oauth 2.0 RESULT_CANCELED while using Google Fit api
body: <p>I am trying to use google fit api in my android app. I followed <a href="https://developers.google.com/fit/android/get-started#step_5_connect_to_the_fitness_service" rel="noreferrer">this</a> guide and created SHA-1 certificate using keytool.exe in my jdk 1.8 bin folder. I have now created Oauth Client ID<a href="https://i.stack.imgur.com/5Nraa.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/5Nraa.jpg" alt="enter image description here"></a>.</p>
  
  <p>In my app, I get RESULT_CANCELED here:</p>
  
  <pre><code>@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if( requestCode == REQUEST_OAUTH ) {
          authInProgress = false;
          if( resultCode == RESULT_OK ) {
              if( !mClient.isConnecting() &amp;&amp; !mClient.isConnected() ) {
                  mClient.connect();
              }
          } else if( resultCode == RESULT_CANCELED ) {/// HERE
              Toast.makeText(MainActivity.this,"RESULT_CANCELED",Toast.LENGTH_SHORT).show();
              Log.e("GoogleFit", "RESULT_CANCELED");
              Log.e("GoogleFit", data.getExtras().toString());
          }
      }else if(requestCode == CALL_END){
          if (resultCode == Activity.RESULT_OK){
              //pass
          }else{
  
          }
      } else {
          Log.e("GoogleFit", "requestCode NOT request_oauth");
      }
  }
  </code></pre>
  
  <p>Trying to figure out the problem from last two days. I have added correct play services library in android studio as: <code>compile 'com.google.android.gms:play-services-fitness:8.4.0'</code></p>
  
  <p>Building Client:</p>
  
  <pre><code>private void buildFitnessClient() {
  
      if (mClient == null &amp;&amp; checkPermissions()) {
          Log.i(TAG, "Building Fitness Client");
          mClient = new GoogleApiClient.Builder(this)
                  .addApi(Fitness.SENSORS_API)
                  .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
                  .addConnectionCallbacks(this)
                  .addOnConnectionFailedListener(this)
                  .build();
          mClient.connect();
      }
  }
  </code></pre>
  
  <p>Callbacks:</p>
  
  <pre><code>/**
   * GOOGLE FIT METHODS
   */
  @Override
  public void onConnected(@Nullable Bundle bundle) {
      DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder()
              .setDataTypes( DataType.TYPE_STEP_COUNT_CUMULATIVE )
              .setDataSourceTypes( DataSource.TYPE_RAW )
              .build();
  
      ResultCallback&lt;DataSourcesResult&gt; dataSourcesResultCallback = new ResultCallback&lt;DataSourcesResult&gt;() {
          @Override
          public void onResult(DataSourcesResult dataSourcesResult) {
              for( DataSource dataSource : dataSourcesResult.getDataSources() ) {
                  if( DataType.TYPE_STEP_COUNT_CUMULATIVE.equals( dataSource.getDataType() ) ) {
                      registerFitnessDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE);
                  }
              }
          }
      };
  
      Fitness.SensorsApi.findDataSources(mClient, dataSourceRequest)
              .setResultCallback(dataSourcesResultCallback);
  }
  @Override
  public void onConnectionSuspended(int i) {
  
  }
  @Override
  public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
      if( !authInProgress ) {
          try {
              authInProgress = true;
              connectionResult.startResolutionForResult( MainActivity.this, REQUEST_OAUTH );
          } catch(IntentSender.SendIntentException e ) {
  
          }
      } else {
          Log.e( "GoogleFit", "authInProgress" );
      }
  }
  @Override
  public void onDataPoint(DataPoint dataPoint) {
      for( final Field field : dataPoint.getDataType().getFields() ) {
          final Value value = dataPoint.getValue( field );
          runOnUiThread(new Runnable() {
              @Override
              public void run() {
                  Toast.makeText(getApplicationContext(), "Field: " + field.getName() + " Value: " + value, Toast.LENGTH_SHORT).show();
                  HealthRecordFragment.mStepsWalking.setText(value.toString());
              }
          });
      }
  }
  </code></pre>
  
  <p>In Gradle:</p>
  
  <pre><code>apply plugin: 'com.android.application'
  
  android {
      compileSdkVersion 23
      buildToolsVersion "23.0.1"
  
      defaultConfig {
          applicationId "com.xxxx.xxxx"
          minSdkVersion 15
          targetSdkVersion 23
          versionCode 1
          versionName "1.0"
      }
      signingConfigs {
          release {
              storeFile file("C:\\Users\\xxxxx\\AndroidStudioProjects\\HBEAT2\\app\\hbeat_android")
              storePassword "password"
              keyAlias "hbeat_android"
              keyPassword "password"
          }
      }
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
  }
  
  dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      compile 'com.google.android.gms:play-services-fitness:8.4.0'
      compile 'com.android.support:appcompat-v7:23.1.1'
      compile "com.android.support:design:23.2.1"
      compile 'com.github.rahatarmanahmed:circularprogressview:2.4.0'
      compile 'de.timroes.android:EnhancedListView:0.3.0'
  }
  </code></pre>