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");
}
}
});
我将 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");
}
}
});