Выбор другого аккаунта для аутентификации Google Fit - PullRequest
0 голосов
/ 04 июля 2018

У меня в приложении интегрирован вход в систему Google. Сейчас я интегрирую Google Fit для чтения данных из него. Но проблема заключается в том, что во время запроса на разрешение для данных о фитнесе он не позволяет выбрать одну из учетных записей Google, имеющихся на устройстве. Вот код, который я использую для запроса разрешения:

FitnessOptions fitnessOptions = FitnessOptions.builder()
             .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
             .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
             .build();
GoogleSignIn.requestPermissions(
                            MyActivity.this, // your activity
                            GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
                            null, // passing null specifically to ask for account selection
                            fitnessOptions);

Этот код перемещается прямо на страницу разрешений с учетной записью, используемой для входа в Google. Когда я использую другой вариант входа, например Facebook, где Google SignIn не вызывается, приведенный выше код отлично показывает диалог выбора учетной записи.

Это создает проблему, когда пользователю нужны разные учетные записи электронной почты для входа в Google и Fitbit.

Есть ли какое-либо решение, позволяющее создать отдельные учетные записи для Google fit и Google Sign In? P.S: моя электронная почта для входа в Google связана с Firebase и бэкэнд-логикой, поэтому запрос пользователя на использование учетной записи Google, связанной с Google Fit, в моем случае не поможет

1 Ответ

0 голосов
/ 05 июля 2018

Хотя я не нашел решения использовать две учетные записи Google в своем приложении, я решил свой вариант использования, используя следующую настройку:

Поскольку я использую Google Login с Firebase и в моем приложении Firebase является источником для аутентификации пользователя, я просто вызываю logout на Goolge Auth после аутентификации с помощью firebase, чтобы удалить Google auth и, следовательно, разрешить выбор учетной записи Google для Google Fit. подключения.

AuthCredential credential = 
           GoogleAuthProvider.getCredential(googleSignInAccount.getIdToken(), null);
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if (App.getGoogleApiHelper().isConnected()) {
            // after checking if google client is available to signout from google auth
            Auth.GoogleSignInApi.signOut(App.getGoogleApiHelper().getGoogleApiClient());
        }
        if (task.isSuccessful()) {
            // Sign in success, update UI with the signed-in user's information
            Timber.tag(TAG).d("signInWithCredential: success");
        } else {
            // If sign in fails, display a message to the user.
            Timber.tag(TAG).d(task.getException(), "signInWithCredential:failure");
        }

    }
});
...