Google Fit 身份验证的不同帐户选择

Different Account selection for Google Fit authentication

我将 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 登录的帐户的权限页面。 当我使用其他登录选项时,例如未调用 Google SignIn 的 Facebook,以上代码完美显示了帐户选择对话框。

当用户需要不同的电子邮件帐户用于 Google 登录和 Fitbit 时,这会产生问题。

是否有任何解决方案可以为 Google fit 和 Google Sign In 设置单独的帐户? P.S:我的 google 登录电子邮件与 Firebase 和后端逻辑相关联,因此要求用户使用与 Google Fit 关联的 Google 帐户对我的情况没有帮助

虽然我没有找到在我的应用程序中使用两个 google 帐户的解决方案,但我使用以下设置解决了我的用例:

因为我使用的是 Google Login with Firebase 并且在我的应用程序中 Firebase 是用户身份验证的来源,我只是在使用 firebase 进行身份验证后调用 Goolge Auth 上的注销以删除 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");
        }

    }
});