首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用云代码解析Swift

调用云代码解析Swift
EN

Stack Overflow用户
提问于 2015-12-14 21:25:47
回答 2查看 2.4K关注 0票数 1

我试图在我的应用程序中使用电话号码验证。在注册期间,用户将被要求提供他们的电话号码,并被发送一个验证代码,他们将输入代码,如果它匹配,他们可以继续。我已经准备好了云代码,但我不知道如何从应用程序中准确地调用它。如能提供任何帮助,将不胜感激。

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

云代码:

代码语言:javascript
复制
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.");
               }
               });

这就是我称之为云代码的地方:

代码语言:javascript
复制
@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
            }
        })
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-14 21:45:38

您应该使用以下方法:

代码语言:javascript
复制
public class func callFunctionInBackground(function: String, withParameters parameters: [NSObject : AnyObject]?, block: PFIdResultBlock?)

您可以这样调用您的函数:

代码语言:javascript
复制
        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  

    }

然后,当用户输入代码时,也要这样做:

代码语言:javascript
复制
        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
    }

不要忘记部署您的代码来使用命令行实用工具进行解析+考虑到向云代码发送参数的常见方法是发送字典

更新,如何发送参数:

代码语言:javascript
复制
PFCloud.callFunctionInBackground("functionName",
            withParameters: ["phoneNumber" : phoneNumber)
            { [unowned self](object:AnyObject?, error:NSError?) -> Void in
                ...


        }
票数 3
EN

Stack Overflow用户

发布于 2015-12-14 21:41:25

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34276898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档