Python调用Azure聊天机器人HTTP接口遇鉴权错误,寻求排查方案
解决Direct Line API请求中"Missing token or secret"错误
你遇到的问题很明确——你把Authorization凭证放到了URL参数里,而不是正确的HTTP请求头中。Direct Line API要求身份验证信息必须通过请求头传递,而不是URL的查询参数。
直接给你修正后的代码:
import requests # 构造请求头,将Authorization凭证放在这里 auth_headers = { 'Authorization': 'Bearer ftmhNAqZ2tw.cwA.qIA.Xz2ZWfYJzxd8vJjcK9VmINWNLxlvKiM5jC8F_cbaf0s' } # 发送POST请求时,通过headers参数传递请求头 response = requests.post( 'https://directline.botframework.com/api/conversations', headers=auth_headers ) # 查看响应结果 print(response.content)
为什么之前的代码会报错?
- 你用的
params参数是用来生成URL查询字符串的(比如https://xxx.com?key=value),但Direct Line API的服务端并不会从这些URL参数里读取Authorization凭证。 - 只有当你把
Authorization: Bearer <你的密钥/令牌>放在HTTP请求头中时,服务端才能正确识别并验证你的身份,从而创建对话。
如果想确认请求头是否正确发送,可以在请求后打印response.request.headers,这样就能看到实际发送给服务器的请求头内容,确保Authorization字段已经正确包含在内。
内容的提问来源于stack exchange,提问作者DavidBankom
相关产品推荐
相关产品推荐

