在 XMPP 中注册无密码用户
Posted
技术标签:
【中文标题】在 XMPP 中注册无密码用户【英文标题】:Register user without password in XMPP 【发布时间】:2017-08-18 15:59:18 【问题描述】:我想实现与 Whatsapp 相同的注册功能(无需密码)。 我搜索了很多,但没有找到最佳解决方案。
目前我正在使用设备 ID 和密码来注册用户,并且工作正常。但如果用户退出或想从其他设备登录,那么我如何使用新设备 ID 继续他们?
我当前获取设备ID和注册用户的代码:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)
return;
String androidId = telephonyManager.getDeviceId();
AccountManager accountManager = AccountManager.getInstance(xmpptcpConnection);
try
Localpart from = Localpart.from(mobileNumber);
if (accountManager.supportsAccountCreation())
accountManager.sensitiveOperationOverInsecureConnection(true);
accountManager.createAccount(mobileNumber, androidId);
catch (Exception e)
throw new SmackInvocationException(e);
【问题讨论】:
Vitalyster 的第 4 点运气好吗? 你能在没有密码的情况下连接吗? 【参考方案1】:-
如果我输入受害者的电话号码和设备 ID 以验证他的身份并阅读他的消息怎么办?首先,您需要通过短信/电话验证我可以使用一些验证码访问此电话号码。
如果我想用台式机或 Apple 设备登录我的帐户怎么办?您不应该依赖 Android 设备 ID,而且绝对不应该是密码。您可以在用户添加新设备时(经过验证!)创建随机令牌字符串,并将服务器上的所有令牌与用户电话号码相关联。
在这种情况下,我的应用程序将如何创建帐户?您应该在服务器上有一个自定义应用程序,它接收验证码并生成密码字符串。
我的应用程序将如何进行身份验证? XMPP 标准使用可插入的身份验证框架 (SASL),您的服务器和客户端应用应该实现一些“基于令牌”的 SASL 机制并使用它而不是“基于密码”。
【讨论】:
是的,我正在使用 OTP 对用户的手机进行身份验证。你能详细说明你的第四点吗?以上是关于在 XMPP 中注册无密码用户的主要内容,如果未能解决你的问题,请参考以下文章
如果用户已经无密码登录,firebase 可以设置密码身份验证吗?