2016-06-23 2 views
3

Итак, я пытаюсь работать с Google Fit и по какой-то причине я не могу подключиться к сервисам Google Play в своем приложении. У меня полностью настроен OAuth, и я тестировал его в другом приложении, и все это работало отлично. В частности, посмотрите на GoogleFitRepository, вот где я подключаюсь к API.Не удается подключиться к сервисам Google Play; Получение кода отмены

Я получаю эту ошибку при попытке подключения:

W/AutoManageHelper: Unresolved error while connecting client. Stopping auto-manage. 
I/MyApp: Google Play services connection failed. Cause: ConnectionResult{statusCode=CANCELED, resolution=null, message=null} 

Ссылка на GitHub: https://github.com/drb56/FitnessExplorer

Любая помощь будет принята с благодарностью. Я застрял на этом весь день!

Edit: вот некоторый код из рассматриваемого класса

public GoogleFitRepository(Activity activity) 
{ 
    mClient = new GoogleApiClient.Builder(activity.getApplicationContext()) 
      .addApi(Fitness.HISTORY_API) 
      .addApi(Fitness.SESSIONS_API) 
      .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ)) 
      .addConnectionCallbacks(this) 
      .enableAutoManage((FragmentActivity)activity, 0, new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(ConnectionResult result) { 
        Log.i("MyApp", "Google Play services connection failed. Cause: " + 
          result.toString()); 
       }}) 
      .build(); 

    activityList = new ArrayList<>(); 
    activityDataPointList = new ArrayList<>(); 
    calorieActivitiesToday = new ArrayList<>(); 
    dayActivities = new ArrayList<>(); 
} 
+0

Правильно обращайтесь с вопросами. По крайней мере скопируйте код. – suku

+0

Извините, добавлен код, который подключается к GoogleApiClient – user292277

ответ

6

Новое обновление требует Google для входа в аккаунт апи быть выполнен вместе с Fit API.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
     .requestEmail() 
     .requestScopes(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE), new Scope(Scopes.FITNESS_LOCATION_READ)) 
     .build(); 

googleApiClient = new GoogleApiClient.Builder(activity) 
     .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
     .addConnectionCallbacks(connectionCallbacks) 
     .addOnConnectionFailedListener(failedListener) 
     .addApi(Fitness.HISTORY_API) 
     .addApi(Fitness.SESSIONS_API) 
     .addApi(Fitness.RECORDING_API) 
     .addApi(Fitness.SENSORS_API) 
     .enableAutoManage(this, 0, this) 
     .build(); 

Вы должны включить Auth API на console.developers.google.com. Пройдите через реализацию API Google Auth на стороне сервера. В противном случае вышеуказанный код не будет работать

+0

Но у меня есть другое приложение, которое не требует GoogleSignInOptions. Когда это стало требованием? – user292277

+0

недавно ... около месяца назад ... ни один из уроков не обновляется – suku

+0

Так что он все еще не работает, даже когда я добавляю это. На самом деле программа моего тестера даже не работает, когда я использую это. Это не дает мне никаких данных. Затем, когда я прокомментирую это, он дает мне нужные мне данные. – user292277

0

У меня была такая же проблема при работе с GoogleFit из библиотеки. После долгих исследований я обнаружил, что я должен поставить:

<meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

в манифест приложения, а не в манифест библиотеки.

Смежные вопросы