问题:
我面临一个问题。我在Android应用中使用Firebase Auth UI。我已要求在GoogleSignInOptions中发送电子邮件。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.web_client_id))
.requestEmail()
.build();
在登录生成器中传递此GoogleSignInOptions
new AuthUI.IdpConfig.GoogleBuilder()
.setSignInOptions(gso)
.build(),
现在,当我通过Google在应用中登录时,将调用onActivityResult()
,那么我将无法通过FirebaseUser.getEmail()
来获取电子邮件。 IdpResponse
包含电子邮件。
IdpResponse response = IdpResponse.fromResultIntent(data); // response.getEmail() returns email
IdpResponse
以上包含电子邮件。
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // user.getEmail() is null
FirebaseUser
对象上方不包含电子邮件。
目的
我希望FirebaseUser对象中包含电子邮件。因为也有其他SignIn提供程序。像Facebook,电子邮件/密码,Twitter。所以我正在寻找独特的解决方案。
答案 0 :(得分:0)
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
for (UserInfo profile : user.getProviderData()) {
// Id of the provider (ex: google.com)
String providerId = profile.getProviderId();
// UID specific to the provider
String uid = profile.getUid();
// Name, email address, and profile photo Url
String name = profile.getDisplayName();
String email = profile.getEmail();
Uri photoUrl = profile.getPhotoUrl();
Toast.makeText(Activity.this, email, Toast.LENGTH_SHORT).show();
}
}