【问题标题】:Calling cloud code Parse Swift调用云代码 Parse Swift
【发布时间】:2015-12-14 21:25:47
【问题描述】:

我正在尝试在我的应用中使用电话号码验证。在注册过程中,系统会要求用户提供他们的电话号码并收到一个验证码,他们将输入验证码,如果匹配,他们就可以继续。我已经准备好云代码,但我不确定如何从应用程序中调用它。任何帮助将不胜感激

我想要做的是当他们输入电话号码并按继续时,首先检查电话号码是否是有效的电话号码,然后发送短信代码。最后转到他们输入代码的验证视图,如果不匹配显示警报,如果匹配,则登录用户

云代码:

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
            }
        })
    }
}

【问题讨论】:

    标签: ios swift parse-platform parse-cloud-code


    【解决方案1】:

    你应该使用这个方法:

    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
                    ...
    
    
            }
    

    【讨论】:

    • 谢谢,我用调用云代码功能的内容更新了问题。我现在遇到的问题是使用用户输入的电话号码设置参数。我从来没有用过这个,所以我很困惑
    • 这就是我在答案底部添加评论的原因,我现在已经用示例更新了答案。
    • 如何使用这种方法传递安全信息,例如会话令牌?
    【解决方案2】:

    假设您已将代码部署到 Parse(命令行“parse deploy”),您可以使用 PFCloud.callFunctionInBackground() 调用云函数。见https://www.parse.com/docs/ios/api/Classes/PFCloud.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多