2016-04-25 10 views
0

新しいアプリを作成しました.GoogleFitの認証部分は完全に機能する別のアプリの完全なコピー/貼り付けです。アカウントを選択するためのウィンドウが表示されますが、その後は必要な範囲を表示するウィンドウが表示されますが、何も表示されません。認証範囲が表示されません

既にこの問題が発生している人はいますか?

必要に応じてコードを投稿できます。

ありがとうございます!

編集

これは、Google Fitに接続するために私のコードです:

private void buildFitnessClient() { 
    // Create the Google API Client 
     mFitClient = new GoogleApiClient.Builder(this) 
       .addApi(Fitness.HISTORY_API) 
       .addApi(Fitness.RECORDING_API) 
       .addApi(Fitness.CONFIG_API) 
       .addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE)) 
       .addScope(new Scope((Scopes.FITNESS_NUTRITION_READ_WRITE))) 
       .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE)) 
       .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
              @Override 
              public void onConnected(Bundle bundle) { 
               Log.i(TAG, "Connected to Fitness API!!!"); 
               // Now you can make calls to the Fitness APIs. 
               // Put application specific code here. 
               // Once connected go the Main2Activity 
               Intent start_google_plus = new Intent(GoogleFitAuthentication.this, MainActivity.class); 
               startActivity(start_google_plus); 
               finish(); 
              } 

              @Override 
              public void onConnectionSuspended(int i) { 
               Log.i(TAG, "onConnectionSuspend"); 
               // If your connection to the sensor gets lost at some point, 
               // you'll be able to determine the reason and react to it here. 
               if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_NETWORK_LOST) { 
                Log.i(TAG, "Connection lost. Cause: Network Lost."); 
               } else if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) { 
                Log.i(TAG, "Connection lost. Reason: Service Disconnected"); 
               } 
              } 
             } 
       ) 
       .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { 
                // Called whenever the API client fails to connect. 
                @Override 
                public void onConnectionFailed(ConnectionResult result) { 
                 Log.i(TAG, "Connection failed. Cause: " + result.toString()); 
                 if (!result.hasResolution()) { 
                  // Show the localized error dialog 
                  GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), 
                    GoogleFitAuthentication.this, 0).show(); 
                  return; 
                 } 
                 // The failure has a resolution. Resolve it. 
                 // Called typically when the app is not yet authorized, and an 
                 // authorization dialog is displayed to the user. 
                 if (!authInProgress) { 
                  try { 
                   Log.i(TAG, "Attempting to resolve failed connection"); 
                   authInProgress = true; 
                   result.startResolutionForResult(GoogleFitAuthentication.this, REQUEST_OAUTH); 
                  } catch (IntentSender.SendIntentException e) { 
                   Log.e(TAG, "Exception while starting resolution activity", e); 
                  } 
                 } 
                } 
               } 
       ) 
       .build(); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.d(TAG, "Processing onActivityResult..."); 
    if (requestCode == REQUEST_OAUTH) { 
     Log.d(TAG, "requestCode == REQUEST_OAUTH"); 
     authInProgress = false; 
     if (resultCode == RESULT_OK) { 
      Log.d(TAG, "resultCode == RESULT_OK"); 
      // Make sure the app is not already connected or attempting to connect 
      if (!mFitClient.isConnecting() && !mFitClient.isConnected()) { 
       mFitClient.connect(); 
      } 
     } 
    }else{ 
     Log.d(TAG, "Impossible to process onActivityResult..."); 
    } 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    // Connect to the Fitness API 
    Log.i(TAG, "Connecting..."); 
    if(mFitClient!=null){ 
     mFitClient.connect(); 
    } 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    Log.i(TAG, "onStop..."); 
    if (mFitClient!=null && mFitClient.isConnected()) { 
     mFitClient.disconnect(); 
    } 
} 

@Override 
protected void onSaveInstanceState(@NonNull Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putBoolean(AUTH_PENDING, authInProgress); 
} 
+0

最初にコピー/ペーストコードを表示してください...アプリIDをコピーしたかもしれません... –

+1

問題が見つかりました。 GoogleのAPIコンソールには、パッケージ名に誤字があります。 –

答えて

0

あなたはスコープを許可すると、ブラウザは、セッションを保存します。したがって、同じブラウザでアプリをもう一度認証すると、スコープはオフラインアクセスと表示されます。

関連する問題