使用 Swift Parse 和 Twilio 时验证码总是无效
Verification code always invalid using Swift Parse and Twilio
我正在使用短信验证来验证用户。我的问题是,当我输入代码进行验证时,我得到了无效代码。我这辈子都想不通为什么。
调用云码功能:
@IBAction func verifyCodeButtonTapped(sender: AnyObject) {
var verificationCode: String = verificationCodeTextField.text!
let textFieldText = verificationCodeTextField.text ?? ""
if verificationCode.utf16.count != 4 {
displayAlert("Error", message: "You must entert the 4 digit verification code sent yo your phone")
} else {
let params = ["verifyPhoneNumber" : textFieldText]
PFCloud.callFunctionInBackground("verifyPhoneNumber", withParameters: params, block: { (object: AnyObject?, error) -> Void in
if error == nil {
self.performSegueWithIdentifier("showVerifyCodeView", sender: self)
} else {
self.displayAlert("Sorry", message: "We couldnt verify you. Please check that you enterd the correct 4 digit code sent to your phone")
}
})
}
}
云码验证码:
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.");
}
});
此处为 Twilio 开发人员布道师。
在 Parse 代码中,您期望 request.params.phoneVerificationCode
但是当您从 iOS 调用云函数时,您 let params = ["verifyPhoneNumber" : textFieldText]
.
所以,要么将该行更改为
let params = ["phoneVerificationCode" : textFieldText]
使其匹配云代码。或将您的云代码更改为
if (verificationCode == request.params.verifyPhoneNumber) {
以便它匹配 iOS 代码。
我正在使用短信验证来验证用户。我的问题是,当我输入代码进行验证时,我得到了无效代码。我这辈子都想不通为什么。
调用云码功能:
@IBAction func verifyCodeButtonTapped(sender: AnyObject) {
var verificationCode: String = verificationCodeTextField.text!
let textFieldText = verificationCodeTextField.text ?? ""
if verificationCode.utf16.count != 4 {
displayAlert("Error", message: "You must entert the 4 digit verification code sent yo your phone")
} else {
let params = ["verifyPhoneNumber" : textFieldText]
PFCloud.callFunctionInBackground("verifyPhoneNumber", withParameters: params, block: { (object: AnyObject?, error) -> Void in
if error == nil {
self.performSegueWithIdentifier("showVerifyCodeView", sender: self)
} else {
self.displayAlert("Sorry", message: "We couldnt verify you. Please check that you enterd the correct 4 digit code sent to your phone")
}
})
}
}
云码验证码:
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.");
}
});
此处为 Twilio 开发人员布道师。
在 Parse 代码中,您期望 request.params.phoneVerificationCode
但是当您从 iOS 调用云函数时,您 let params = ["verifyPhoneNumber" : textFieldText]
.
所以,要么将该行更改为
let params = ["phoneVerificationCode" : textFieldText]
使其匹配云代码。或将您的云代码更改为
if (verificationCode == request.params.verifyPhoneNumber) {
以便它匹配 iOS 代码。