Python API调用异常:获取Access Token后POST请求提示无效
问题:POST请求携带access_token返回"Invalid access token"错误
我正在处理一道面试编程题,需使用Python将源URL中的JSON数据发送至目标API。根据企业提供的文档,发送请求需携带access-token与API-version请求头。我已通过GET请求携带凭证成功获取access_token,但使用该token发起POST请求时,却收到{"message":"Invalid access token"}错误。
获取token的代码
Base_URL = "i can't show the URL, but imagine there is a URL here" client_ID = "abc" client_SECRET = "123" api_VERSION = "v3" grant_TYPE = "client_credentials" headers = { 'Client-Id': client_ID, 'Client-Secret': client_SECRET, 'Grant-Type':grant_TYPE, 'Api-Version':api_VERSION } request = requests.get(Base_URL, headers=headers) token_info = request.json() token = token_info.get('access_token') print(token)
POST请求代码
post_URL = "Nope can't show the URL" headers = { 'Authorization':f'bearer {token}', 'Api-Version':api_VERSION, 'Content-Type': "application/json" } for user in user_array: request = requests.post(post_URL, headers=headers, json=json.dumps(user)) print(request.text)
可能的错误点及修复方案
- Authorization头大小写错误:API规范中
Bearer的首字母必须大写,你当前写的是bearer,很多服务对这个字段大小写敏感,修改为:'Authorization':f'Bearer {token}' - JSON参数传递错误:
requests.post的json参数接受Python字典,无需手动用json.dumps()序列化。如果传入字符串,会导致请求体格式异常,部分API会因此拒绝请求,修复方式:request = requests.post(post_URL, headers=headers, json=user) - 循环请求变量覆盖:循环内每次POST都会覆盖
request变量,最终仅能看到最后一次请求的响应。建议在循环内打印响应或保存结果,便于排查每一次请求的问题:for user in user_array: response = requests.post(post_URL, headers=headers, json=user) print(response.text) - token有效性验证:可以额外检查获取token请求的状态码和返回内容,确认token是否有效:
print(request.status_code) # 确认是否为200 print(token_info) # 查看是否包含expires_in等有效字段,确认token未过期
是否是面试题本身的问题?
大概率不是。这类错误几乎都是代码细节不符合API规范导致的,先排查上述几个常见问题,尤其是大小写和参数序列化的问题,这是接口请求中最容易踩的坑。
内容的提问来源于stack exchange,提问作者Ahadd Rashid
相关产品推荐
相关产品推荐

