2017-08-18 121 views
0

我想實現與Whatsapp(無密碼)相同的註冊功能。 我搜索很多,但沒有得到最好的解決方案。在XMPP中無密碼註冊用戶

目前我使用設備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); 
     } 
+0

任何運氣與第四點vitalyster? – Mohit

+0

你能夠連接沒有密碼? – Mohit

回答

0
  1. ,如果我進入我的受害者的電話號碼和設備ID爲他進行認證,看他的消息是什麼?首先,您需要通過短信/電話驗證我是否有權訪問此電話號碼以及一些驗證碼。
  2. 如果我想用桌面或Apple設備登錄我的帳戶,該怎麼辦?您不應該依賴Android設備ID,並且絕對不應該是密碼。您可以在用戶添加新設備(驗證後)時創建隨機令牌字符串,並將服務器上的所有令牌鏈接到用戶電話號碼。
  3. 在這種情況下,我的應用程序如何創建帳戶?您應該在服務器上有一個自定義應用程序,該應用程序接收驗證碼並生成密碼字符串。
  4. 我的應用如何驗證? XMPP標準使用可插入的身份驗證框架(SASL),您的服務器和客戶端應用程序應該實現一些「基於標記的」SASL機制,並使用它來代替「基於密碼」。
+0

是的我使用OTP來驗證用戶的手機。你能否提供關於你第四點的更多細節。 – LearnPainLess