关键词:
【中文标题】如何在视图模型中实现 Firebase 电话身份验证?【英文标题】:How can firebase phone auth be implemented in view model? 【发布时间】:2021-04-10 04:42:00 【问题描述】:我正在尝试使用 Kotlin 在视图模型中添加 Firebase 电话身份验证代码。问题是PhoneAuthProvider
需要一个活动。有谁知道如何在不需要活动的情况下在视图模型中实现此代码?
谢谢!
val mCallbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks ...
val options = PhoneAuthOptions.newBuilder(auth).apply
setPhoneNumber(phoneNumber)
setTimeout(120L, TimeUnit.SECONDS)
setActivity(this) <-------------------------- // Activity (for callback binding)
setCallbacks(mCallbacks)
.build()
PhoneAuthProvider.verifyPhoneNumber(options)
【问题讨论】:
【参考方案1】:结果证明这是对 API 20 (check out this issue on Github) 的有意更改,尽管它违反了 MVVM 架构。需要活动的原因是该方法回退到 reCAPTCHA。实现它的正确方法是“尚未确定”。
【讨论】:
你最终选择了两个“邪恶”中的哪一个,视图模型中的活动实例或直接在片段/活动中做所有事情? 不能再同意了,他们都是邪恶的。但是不,永远不要在视图模型中使用活动实例。可惜还没修好。【参考方案2】:我的方法是在 viewModel 中包含所有内容,包括回调。然后我在 viewModel 中调用一个函数并传入一个活动参数。见下文:
fun verifyPhoneNumber(phoneNumber: String, activity: Activity)
_validFullPhoneNumber.value = phoneNumber
val options = PhoneAuthOptions.newBuilder(mAuth)
.setPhoneNumber(phoneNumber) // Phone number to verify
.setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
.setActivity(activity)
.setCallbacks(callbacks) // OnVerificationStateChangedCallbacks
.build()
PhoneAuthProvider.verifyPhoneNumber(options)
在 UI 控制器中,我称之为片段:
viewModel.verifyPhoneNumber(validatedPhoneNumber, requireActivity())
与重新发送按钮功能相同。
视图模型:
fun resendVerificationCode(activity: Activity)
val options =
PhoneAuthOptions.newBuilder(mAuth)
.setPhoneNumber(_validFullPhoneNumber.value!!) // Phone number to verify
.setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
.setActivity(activity)
.setCallbacks(callbacks) // OnVerificationStateChangedCallbacks
.setForceResendingToken(_resendToken) // ForceResendingToken from callbacks
.build()
PhoneAuthProvider.verifyPhoneNumber(options)
_isVerificationCodeExpired.value = false
UI 控制器(片段):
viewModel.resendVerificationCode(requireActivity())
【讨论】:
在firebase中实现电话和电子邮件身份验证的最佳方法是一次性使用?
】在firebase中实现电话和电子邮件身份验证的最佳方法是一次性使用?【英文标题】:Bestapproachinimplementingbothphoneandemailauthinfirebaseforasingleuse?【发布时间】:2020-05-3109:12:21【问题描述】:我正在开发一个颤振应用程序,我希望我... 查看详情
如何在 MVVM-C RxSwift 中实现 firebase 身份验证
】如何在MVVM-CRxSwift中实现firebase身份验证【英文标题】:HowtoimplementfirebaseauthintoMVVM-CRxSwift【发布时间】:2020-03-2512:27:07【问题描述】:我正在尝试实现一个MVVM-Crxswift应用程序。我的注册视图控制器有一个虚拟机,用户名和密码... 查看详情
在 Firebase 电话身份验证中未接收代码。
】在Firebase电话身份验证中未接收代码。【英文标题】:NotReceivingcodeinFirebasePhoneAuthentication.【发布时间】:2017-10-0613:53:21【问题描述】:我正在尝试在我的应用中实现Firebase电话身份验证。我在GitHub上引用了firebaseandroid文档,但... 查看详情
Firebase 电话身份验证 (Flutter) 在某些 iOS 设备中不起作用
】Firebase电话身份验证(Flutter)在某些iOS设备中不起作用【英文标题】:FirebasePhoneAuth(Flutter)isnotworkinginsomeiOSdevices【发布时间】:2019-10-0520:49:42【问题描述】:我已经使用firebase电话身份验证在颤振应用中实现了电话号码身份验证... 查看详情
Firebase 身份验证服务
】Firebase身份验证服务【英文标题】:FirebaseAuthenticationService【发布时间】:2019-02-0611:21:01【问题描述】:我想设置多个认证服务。好像用户使用电子邮件和密码或电话号码登录,但我希望用户同时使用电子邮件和密码以及电话... 查看详情
如何在用于编辑 HTML 的 Javascript 组件中实现视图模型分离?
】如何在用于编辑HTML的Javascript组件中实现视图模型分离?【英文标题】:HowcanIachieveview-modelseparationinaJavascriptcomponentforeditingHTML?【发布时间】:2015-09-2600:27:41【问题描述】:我需要为特定的HTML子集构建一个浏览器内WYSI(或多或... 查看详情
在 SwiftUI 中实现 Firebase 身份验证时,Xcode 13 找不到 FacebookAppID [重复]
】在SwiftUI中实现Firebase身份验证时,Xcode13找不到FacebookAppID[重复]【英文标题】:Xcode13cannotfindFacebookAppIDwhenimplementingFirebaseauthinSwiftUI[duplicate]【发布时间】:2021-10-3023:50:53【问题描述】:Xcode13的一个主要变化是info.plist不再可见。... 查看详情
可以在 Firebase 3 中实现自定义身份验证属性并将其与安全安全规则一起使用吗?
】可以在Firebase3中实现自定义身份验证属性并将其与安全安全规则一起使用吗?【英文标题】:CancustomauthpropertiesbeimplementedandusedwithsecuritysecurityrulesinFirebase3?【发布时间】:2016-09-1916:15:30【问题描述】:legacyFirebasedocumentation表示... 查看详情
如何在 ASP.NET MVC 5 中实现自定义身份验证
】如何在ASP.NETMVC5中实现自定义身份验证【英文标题】:HowtoimplementcustomauthenticationinASP.NETMVC5【发布时间】:2015-10-1314:09:48【问题描述】:我正在开发一个ASP.NETMVC5应用程序。我有一个现有的数据库,我从中创建了我的ADO.NET实体... 查看详情
如何在 webapp 中实现 firebase 云消息传递? [关闭]
】如何在webapp中实现firebase云消息传递?[关闭]【英文标题】:Howtoimplementfirebasecloudmessaginginwebapp?[closed]【发布时间】:2016-06-3018:13:20【问题描述】:如果有人有任何示例应用程序可以在web应用程序中实现firebase云消息传递,这将... 查看详情
如何在 Firebase 中实现基于角色的访问控制
】如何在Firebase中实现基于角色的访问控制【英文标题】:howdoIimplementrolebasedaccesscontrolinfirebase【发布时间】:2013-10-3111:39:04【问题描述】:这是我第一次涉足Firebase和nosql,我来自SQL背景。使用简单登录安全电子邮件/密码,如何... 查看详情
如何在启用电话身份验证的情况下导出 Firebase 用户帐户
】如何在启用电话身份验证的情况下导出Firebase用户帐户【英文标题】:HowtoexportfirebaseuseraccountwithphoneAuthenabled【发布时间】:2018-01-2703:03:26【问题描述】:我需要导出和导入firebase用户帐户。它适用于使用电子邮件密码验证注册... 查看详情
如何在颤振应用程序中进行 Firebase 电话身份验证
】如何在颤振应用程序中进行Firebase电话身份验证【英文标题】:Howtodofirebasephoneauthinaflutterapp【发布时间】:2019-10-1309:09:06【问题描述】:我已完成附加数据库的所有步骤,并证明我可以获得不受任何身份验证规则保护的数据。... 查看详情
Firebase 使用电话号码对现有的自定义登录流程进行身份验证
】Firebase使用电话号码对现有的自定义登录流程进行身份验证【英文标题】:FirebaseAuthtoexistingcustomloginflowwithPhoneNumber【发布时间】:2021-11-2010:35:13【问题描述】:我有一个应用程序已在Play商店上发布,并使用了一些安全规则公... 查看详情
如何为 Flutter Web 添加 Firebase 预构建的身份验证 UI?
】如何为FlutterWeb添加Firebase预构建的身份验证UI?【英文标题】:HowtoaddFirebasepre-builtAuthUIforflutterweb?【发布时间】:2020-09-2817:50:14【问题描述】:如何在FlutterWeb应用中实现Firebase内置ui?我看过很多教程,但所有教程都实现了googl... 查看详情
是否有用于在 Django 中实现视图模型装饰器 ala Draper 的库?
】是否有用于在Django中实现视图模型装饰器alaDraper的库?【英文标题】:IstherealibraryforimplementingviewmodeldecoratorsalaDraperinDjango?【发布时间】:2015-07-0219:24:14【问题描述】:我想要“视图模型装饰器”,例如Draper在Django中为Rails实现... 查看详情
如何在我的域模型中实现 ASP.NET 成员资格提供程序
】如何在我的域模型中实现ASP.NET成员资格提供程序【英文标题】:HowtoimplementASP.NETmembershipproviderinmydomainmodel【发布时间】:2010-10-2302:33:27【问题描述】:在一个网站中,我需要整合会员资格和身份验证。所以我想使用ASP.NETMembers... 查看详情
如何在angular4的firebase电话身份验证中重新发送短信验证?
】如何在angular4的firebase电话身份验证中重新发送短信验证?【英文标题】:HowtoresendSMSverificationinfirebasephoneauthenticationinangular4?【发布时间】:2019-01-1302:42:01【问题描述】:我正在从事angular4和ionic3项目。在项目中,我为登录页面... 查看详情