如何通过API获取amoCRM数据并解决401未授权报错问题
amoCRM API 401错误修复方案
核心错误点与修复方法
域名不匹配错误
你实际可访问的接口域名为alamiri.amocrm.ru,但代码中请求的URL写为alamiri.amocrm.com,域名后缀错误直接导致认证信息不匹配。
修复:将代码中的url修改为url = "https://alamiri.amocrm.ru/api/v4/contacts"请求头冗余且认证参数错误
amoCRM v4 接口仅需要在请求头携带Authorization字段即可,你在headers中塞入了grant_type、refresh_token、session_id、csrf_token等不属于请求头的 OAuth 认证参数,反而会干扰接口校验。
同时你Authorization字段使用了非JWT格式的api_key,但代码中已经生成了正确的JWT格式access_token,认证参数传值错误。
修复:清空冗余请求头,仅保留正确的认证字段:
headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json' }
- Access Token过期
你提供的JWT格式access_token的过期时间戳为1637342033,对应北京时间2021-11-20 00:07:13,早已过期。
修复:按照amoCRM OAuth2流程重新申请有效access_token:- 先使用授权码向
https://alamiri.amocrm.ru/oauth2/access_token接口发起POST请求兑换access_token和refresh_token - 后续access_token过期后使用refresh_token换新的有效凭证即可
- 先使用授权码向
修正后的参考代码
import requests import pprint def get_contacts(): # 修正为正确的ru域名 url = "https://alamiri.amocrm.ru/api/v4/contacts" # 替换为你最新申请的有效access_token valid_access_token = "你新获取的有效JWT格式access_token" headers = { 'Authorization': f'Bearer {valid_access_token}', 'Content-Type': 'application/json' } response = requests.get(url, headers=headers) pprint.pprint(response.json()) get_contacts()
内容的提问来源于stack exchange,提问作者Anonymous Programmer
相关产品推荐
相关产品推荐

