在XMPP中注册没有密码的用户

时间:2017-08-18 15:59:19

标签: android xmpp smack

我想实现与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);
        }

1 个答案:

答案 0 :(得分:0)

  1. 如果我输入受害者的电话号码和设备ID作为他身份验证并阅读他的消息怎么办?首先,您需要通过短信/电话验证我是否可以使用某些验证码来访问此电话号码。
  2. 如果我想使用桌面设备或Apple设备登录我的帐户怎么办?你不应该依赖Android设备ID,绝对不应该是密码。您可以在用户添加新设备时创建随机令牌字符串(验证后!)并保留服务器上与用户电话号码相关联的所有令牌。
  3. 在这种情况下,我的应用如何创建帐户?您应该在服务器上有一个自定义应用程序,它接收验证码并生成密码字符串。
  4. 我的应用将如何验证? XMPP标准使用可插入的身份验证框架(SASL),您的服务器和客户端应用程序应实现一些“基于令牌的”SASL机制,并使用它而不是“基于密码”。