首页 文章

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

提问于
浏览
0

我在我的应用程序中选择了Google Sign In . 现在我正在整合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登录设置单独的帐户? P.S:我的谷歌登录电子邮件与Firebase和后端逻辑相关联,因此要求用户使用与Google健身相关联的Google帐户对我的情况无济于事

1 回答

  • 0

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

    由于我使用Google登录Firebase并在我的应用中使用Firebase是用户身份验证的来源,因此我只需在使用firebase进行身份验证后调用Goolge Auth上的注销即可删除Google身份验证,从而允许选择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");
            }
    
        }
    });
    

相关问题