2015-12-14 18 views
1

我試着用電話號碼驗證我的應用程序。在註冊期間,用戶將被要求輸入他們的電話號碼併發送驗證碼,他們將輸入代碼,如果匹配,他們可以繼續。我準備好了雲代碼,但我不確定從應用程序調用此代碼的確切方式。任何幫助,將不勝感激調用雲碼分析斯威夫特

,當他們進入他們的電話號碼,然後按下去,先檢查電話號碼是一個有效的電話號碼,我希望能夠做的是,然後發送短信代碼。 Segue公司終於向他們輸入驗證碼,如果它不匹配,顯示警告,如果這樣做,登錄用戶在

雲代碼驗證的觀點:

var twilioAccountSid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
var twilioAuthToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
var twilioPhoneNumber = '+1555-555-5555'; 
var secretPasswordToken = '1234'; 


var twilio = require('twilio')(twilioAccountSid, twilioAuthToken); 

Parse.Cloud.define("sendVerificationCode", function(request, response) { 
       var verificationCode = Math.floor(Math.random()*999999); 
       var user = Parse.User.current(); 
       user.set("phoneVerificationCode", verificationCode); 
       user.save(); 

       twilio.sendSms({ 
           From: twilioPhoneNumber, 
           To: request.params.phoneNumber, 
           Body: "Your verification code is " + verificationCode + "." 
           }, function(err, responseData) { 
           if (err) { 
           response.error(err); 
           } else { 
           response.success("Success"); 
           } 
           }); 
       }); 
Parse.Cloud.define("verifyPhoneNumber", function(request, response) { 
       var user = Parse.User.current(); 
       var verificationCode = user.get("phoneVerificationCode"); 
       if (verificationCode == request.params.phoneVerificationCode) { 
       user.set("phoneNumber", request.params.phoneNumber); 
       user.save(); 
       response.success("Success"); 
       } else { 
       response.error("Invalid verification code."); 
       } 
       }); 

這就是我所說的雲代碼:

@IBOutlet weak var continueButton: UIButton! 
@IBOutlet weak var phoneNumberTextField: UITextField! 
@IBAction func continueButtonTapped(sender: AnyObject) { 
    var phoneNumber = self.phoneNumberTextField.text 

    if phoneNumber?.utf16.count < 10 { 
     displayAlert("Error", message: "You must enter a valid 10 digit US phone number including area code") 
    } else { 
     let params = phoneNumber 
     PFCloud.callFunctionInBackground("sendVerificationCode", withParameters: params, block: { (object: AnyObject?, error) -> Void in 
      if error == nil { 
       self.performSegueWithIdentifier("showVerifyUserView", sender: self) 
      } else { 

       // Do error handling 
      } 
     }) 
    } 
} 

回答

3

你應該使用這種方法:

public class func callFunctionInBackground(function: String, withParameters parameters: [NSObject : AnyObject]?, block: PFIdResultBlock?) 

你可以打電話給你的功能是這樣的:

 PFCloud.callFunctionInBackground("sendVerificationCode", 
     withParameters: /* any needed params here, for example mobile phone*/) 
     { [unowned self](object:AnyObject?, error:NSError?) -> Void in 
      guard error == nil else { 
       //handle error 
       return 
      } 
      // everything ok 
      // notify your app that code is send successfully 

    } 

當用戶輸入的代碼然後做相同的:

 PFCloud.callFunctionInBackground("verifyPhoneNumber", 
     withParameters: /* any needed params here, for example verification code*/) 
     { [unowned self](object:AnyObject?, error:NSError?) -> Void in 
      guard error == nil else { 
       //handle wrong notification code 
       return 
      } 
      // code is ok, notify your app verification is complete 
    } 

不要忘記部署你的代碼與命令行實用程序解析+考慮到臨屋區牛逼常見的方式發送參數到雲碼是發送詞典

更新,如何發送參數:

PFCloud.callFunctionInBackground("functionName", 
      withParameters: ["phoneNumber" : phoneNumber) 
      { [unowned self](object:AnyObject?, error:NSError?) -> Void in 
       ... 


     } 
+0

謝謝,我更新的問題,與我有什麼調用雲碼功能。我現在遇到的問題是用用戶輸入的電話號碼設置參數。我從來沒有用過這個,所以我很困惑我 – m1234

+0

這就是爲什麼我在我的答案的底部添加評論,我已經用例子更新了答案。 – s1ddok

+0

如何使用此方法傳遞安全信息,如會話令牌? –