我已在我的应用中使用Firebase AuthUI通过Google,电话和电子邮件方法登录。成功认证后,我需要将数据存储在Firestore中。
我用于与列出的差异提供程序一起启动Firebase Auth Screen的代码:
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false, true)
.setLogo(R.drawable.yam_logo_orange_512)
.setAvailableProviders(Arrays.asList(
new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().build(),
new AuthUI.IdpConfig.PhoneBuilder().build()
)).build(),
RC_SIGN_IN);
但是,正如我在上面写下的-我正在使用提供默认按钮和UI的AuthUI-我没有电话号码字段的所有权,也没有电话号码的所有权。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
IdpResponse response = IdpResponse.fromResultIntent(data);
String providerType = response.getProviderType();
if (resultCode == RESULT_OK) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
switch (providerType) {
case Constants.PROVIDER_GOOGLE:
account = GoogleSignIn.getLastSignedInAccount(this);
if (account != null) {
firebaseAuthWithGoogle(account, response.isNewUser());
}
break;
case Constants.PROVIDER_PHONE:
if(null!=phoneAuthCredential){
signInWithPhoneAuthCredential(phoneAuthCredential, response.isNewUser());
}
break;
case Constants.PROVIDER_EMAIL:
break;
}
}
}
}
}
请帮助我完成此操作。我需要做一个自定义屏幕来获取号码,然后注册PhoneAuth回调吗?
谢谢, 卡纳克
答案 0 :(得分:1)
只需创建一个自定义屏幕(UI),您就拥有了这一切的所有权,可以轻松访问文本字段,还包括以下内容:
if (requestCode == RC_SIGN_IN) {
println(requestCode)
//
}
在这里:
if (user != null) {
println(user)
//
}
只是为了进一步了解您可能在哪里得到错误。同样,一旦通过打印值看到错误出在哪里,就应该能够注册PhoneAuth回调。