我试着从twilio服务中得到短信,但是一直收到这个错误。
请求:
func SMSRequest(countryCode:String, phoneNumber: String) {
let accountSid = "ACc4d9785419f144412823ff2034660c3d"
let authToken = "a2293a42841f8999caa237er363" // changed
let phoneNumber = "+14243960339"
let toNumber = "+37378847884"
let url = URL(string: "https://\(accountSid):\(authToken)@api.twilio.com/2010-04-01/Accounts/\(accountSid)/SMS/Messages")
print("url", url!)
let parameters = [
"From": phoneNumber,
"To": toNumber,
"Body":"Hi daddy"
]
Alamofire.request(url!, method: .post, parameters: parameters,
encoding: JSONEncoding.default, headers: [:]).responseJSON { response in
let response = String(describing: response.result.ifFailure({
print(response)
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {print("Data: \(utf8Text)")}
}))
}
}错误:
<TwilioResponse><RestException><Code>21603</Code><Message>A 'From' phone number is required.</Message><MoreInfo>https://www.twilio.com/docs/errors/21603</MoreInfo><Status>400</Status></RestException></TwilioResponse>解决方案:使用utf8编码。
发布于 2017-12-07 23:10:37
两位开发人员在这里传道。
需要注意的是,尽管您已经解决了问题,但您正在构建一个根本上不安全的应用程序。我离开了关于你另一个问题的评论,但我也需要指出这一点。
我们不建议您直接从本地应用程序向Twilio发出请求。要做到这一点,您需要在应用程序的某个位置存储或检索帐户SID和auth令牌。如果您这样做,那么恶意攻击者就可以访问您的凭据并滥用您的Twilio帐户。
这实际上被称为今年早些时候有人写到了窃听者的漏洞。
相反,我们建议您创建一个web应用程序并从那里发送API请求。在这里有一篇关于如何做到这一点的博客文章:https://www.twilio.com/blog/2016/11/how-to-send-an-sms-from-ios-in-swift.html
发布于 2018-10-22 22:11:24
更新Swift 4-您不需要真正指定编码,只需将其保留为默认值即可。
关于Twilio的答案,他们不应该说人们“不应该”向API提出请求,而是删除这个功能,并在SDK上提供适当的身份验证服务。就目前而言,这是我找到的最佳解决方案。
let accountSID = "BOB"
let authToken = "BOB'S PASSWORD"
let url = "https://api.twilio.com/2010-04-01/Accounts/\(accountSID)/Messages" as URLConvertible
let parameters = ["From": "SENDER", "To": "RECIPIENT", "Body": "Hello world!"]
Alamofire.request(url, method: .post, parameters: parameters)
.authenticate(user: accountSID, password: authToken)
.responseString { response in
debugPrint(response)
}https://stackoverflow.com/questions/47659456
复制相似问题