0

希望stackoverflow社区能帮助我。我想在 python 中使用 POST api 发送短信,这是我尝试过的:

>> post_data = {"To": "my-phone-number", "From": TWILIO_NUMBER, "Body": "Test message", "AccountSid": "my-account-sid", "AuthToken":"my-auth-token"}
>> import requests
>> response = requests.post('https://api.twilio.com/2010-04-01/Accounts/my-account-sid/Messages', data=post_data)

我收到以下错误:

response.content     
"<?xml version='1.0' encoding='UTF-8'?>\n<TwilioResponse><RestException><Code>20003</Code><Detail>Your AccountSid or AuthToken was incorrect.</Detail><Message>Authentication Error - No credentials provided</Message><MoreInfo>https://www.twilio.com/docs/errors/20003</MoreInfo><Status>401</Status></RestException></TwilioResponse>"

我什至尝试了这个请求 URI:

>> response = requests.post('https://api.twilio.com/2010-04-01/Accounts/my-account-sid:my-auth-token/Messages', data=post_data)

仍然是同样的错误:-/

我的 uri 错误还是 POST 参数不完整?老实说,对于 POST api,文档并不是很好:-/

更新:任何仍在寻找答案的人,您都可以看到已接受的答案或更新请求,如下所示:

response = requests.post('https://api.twilio.com/2010-04-01/Accounts/my-account-sid/Messages', data=post_data, auth=('my-account-sid', 'my-auth-token'))
4

1 回答 1

1

Twilio 开发人员布道者在这里。

抱歉,您在这里没有找到很棒的文档。希望我能帮上忙。

您缺少的是您的帐户 SID 和身份验证令牌作为您的 HTTP 基本身份验证凭据正如您对 Twilio API 请求的文档所述,您应该能够在 URL 中提供这些凭据,如下所示:

https://{AccountSid}:{AuthToken}@api.twilio.com/2010-04-01/Accounts

所以你的原始请求应该看起来像这样:

>> response = requests.post('https://{{ account_sid }}:{{ auth_token }}@api.twilio.com/2010-04-01/Accounts/{{ account_sid }}/Messages', data=post_data)

当您使用 Python 时,您可能会发现使用官方Twilio Python 帮助程序库更容易。使用库发送 SMS 消息看起来有点像这样:

from twilio.rest import TwilioRestClient

account_sid = "{{ account_sid }}"
auth_token  = "{{ auth_token }}"

client = TwilioRestClient(account_sid, auth_token)

message = client.messages.create(body="Hello from Python",
    to= MY_PHONE_NUMBER,
    from_= MY_TWILIO_NUMBER)

这样,您不必担心验证请求,TwilioRestClient对象会为您完成。

于 2016-09-01T06:39:11.260 回答