android - Firebase AuthUI:如何注册 PhoneAuthProvider OnVerificationStateChangedCallbacks
问题描述
我在我的应用程序中使用 Firebase AuthUI 使用谷歌、电话和电子邮件方法登录。身份验证成功后,我需要将数据存储在 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 回调?
谢谢, 卡纳克
解决方案
只需制作一个自定义屏幕 (UI),让您拥有这一切的所有权,从而轻松访问文本字段,还包括一些:
if (requestCode == RC_SIGN_IN) {
println(requestCode)
//
}
这里也是:
if (user != null) {
println(user)
//
}
只是为了进一步了解您可能在哪里出错。此外,一旦您通过打印值查看错误所在的位置,您应该能够注册 PhoneAuth 回调。
推荐阅读
- android - 使用为 android 编译的 LibVLC 从 MPEG2 流中显示 DVB 字幕
- java - X 轴上具有固定第二时间间隔的图表
- python - 如何对嵌套列表中的元素求和?
- couchdb - 在 couchDB / PouchDB 中使用过滤器
- asp.net - Ubuntu 16.04 下的 .NET CORE - 记录权限
- openid-connect - 如果请求失败,如何使 Keycloak 自动重定向到登录页面
- reactjs - 我可以使用参数的内联声明调用带有参数的事件处理程序,而无需在每次渲染时重新创建函数吗?
- automation - 层次结构不尊重事实
- javascript - DOMException: 未找到请求的设备 GetUserMedia
- jmeter - 无法初始化智能电表,因为它会产生错误?