Python调用Experian API遇401错误求排查,能否弃用JSON?
对接Experian API遇到401错误,代码是否存在问题?能否仅用Python不用JSON实现?
我正在开发一款Web应用,这是首次对接外部API服务器。我熟悉Python和脚本编写,当前优先验证数据获取功能,之后再构建UX等其他功能,但401错误卡住了进度。想请教两个问题:
- 我的代码是否存在问题?
- 能否仅使用Python而不用JSON来实现?
我的代码
import requests import json import time # Configuration CLIENT_ID = "CODE" CLIENT_SECRET = "CODE" USERNAME = "USERNAME" PASSWORD = "PASSWORD" BASE_URL = "https://sandbox-us-api.experian.com" # Global variables to store tokens access_token = None refresh_token = None def request_access_token(): global access_token, refresh_token url = f"{BASE_URL}/oauth2/v1/token" headers = { 'Accept': 'application/json', 'Content-Type': 'application/json' } data = { "username": USERNAME, "password": PASSWORD, "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "grant_type": "password" } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: tokens = response.json() access_token = tokens.get("access_token") refresh_token = tokens.get("refresh_token") print("Access Token:", access_token) print("Refresh Token:", refresh_token) else: print("Failed to get access token. Status code:", response.status_code) print("Response:", response.json()) def refresh_access_token(): global access_token, refresh_token url = f"{BASE_URL}/oauth2/v1/token" headers = { 'Accept': 'application/json', 'Content-Type': 'application/json' } data = { "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "grant_type": "refresh_token", "refresh_token": refresh_token } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: tokens = response.json() access_token = tokens.get("access_token") refresh_token = tokens.get("refresh_token") print("New Access Token:", access_token) print("New Refresh Token:", refresh_token) else: print("Failed to refresh token. Status code:", response.status_code) print("Response:", response.json()) def revoke_token(token): url = f"{BASE_URL}/oauth2/v1/revokeToken" headers = { 'Accept': 'application/json', 'Content-Type': 'application/json' } data = { "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "token": token } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Token successfully revoked.") else: print("Failed to revoke token. Status code:", response.status_code) print("Response:", response.json()) def make_api_call(): global access_token url = f"{BASE_URL}/business/score/v2/directors" headers = { 'Accept': 'application/json', 'Authorization': f'Bearer {access_token}' } response = requests.get(url, headers=headers) if response.status_code == 200: print("API response:", response.json()) else: print("Failed to fetch data. Status code:", response.status_code) print("Response:", response.json()) # Main workflow if __name__ == "__main__": # Step 1: Request Access Token request_access_token() # Simulate waiting for token expiration time.sleep(5) # Wait for 5 seconds (in real use, wait until token is about to expire) # Step 2: Use Bearer Token make_api_call() # Step 3: Refresh Access Token refresh_access_token() # Step 4: Revoke Token revoke_token(access_token)
输出结果
请求访问令牌、API数据获取等步骤均返回401 Unauthorized错误。
参考文档
- Experian开发者入门指南
- Business API官方文档
内容的提问来源于stack exchange,提问作者Karfear's Softwear
相关产品推荐
相关产品推荐

