我的应用程序中集成了Google登录功能。现在,我正在集成Google Fit以从中读取数据。但是问题出在健身数据的权限请求期间,它没有提供从Device上存在的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拥有单独的帐户? 附注:我的Google登录电子邮件与Firebase和后端逻辑相关联,因此,在我的情况下,要求用户使用与Google Fit关联的Google帐户无济于事
答案 0 :(得分:0)
尽管我没有找到在我的应用中使用两个Google帐户的解决方案,但我使用以下设置解决了用例:
由于我将Google Login与Firebase一起使用,并且在我的应用中Firebase是用户身份验证的来源,因此我在通过firebase进行身份验证后,只需在Goolge Auth上调用注销即可删除Google身份验证,因此可以选择Google Fit的Google帐户连接。
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");
}
}
});