You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TwitterAPI高级选项过滤位置时遇422错误求助

嘿,你遇到的422 Unprocessable Entity错误,本质是Twitter API不认可你传入的point_radius参数格式。咱们来一步步解决它:

问题根源

你把point_radius写成了一个整串字符串'[-73.7781 40.6413 2km]',但Twitter的搜索API对这个参数的格式有明确要求——要么是逗号分隔的坐标+半径字符串,要么通过TwitterAPI库直接传递一个结构化列表(库会自动转成API能识别的格式)。

修正后的代码

这里给你两种可行的写法,选一种就行:

写法1:使用列表(推荐,更清晰)

from TwitterAPI import TwitterAPI

# 替换成你的真实密钥信息
consumer_key = 'YOUR_CONSUMER_KEY'
consumer_secret = 'YOUR_CONSUMER_SECRET'
access_token_key = 'YOUR_ACCESS_TOKEN'
access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET'

api = TwitterAPI(consumer_key, consumer_secret, access_token_key, access_token_secret)
PRODUCT = '30day'
LABEL = 'development'
SEARCH_TERM = 'JFK'

# 重点:point_radius用列表传递,半径带单位字符串,坐标顺序是[经度, 纬度, 半径]
r = api.request(
    'tweets/search/%s/:%s' % (PRODUCT, LABEL),
    {
        'query': SEARCH_TERM,
        'point_radius': [-73.7781, 40.6413, '2km']
    }
)

for item in r:
    print(item['text'] if 'text' in item else item)

写法2:使用逗号分隔的字符串

如果你更习惯用字符串传递,记得用逗号分隔各个值:

# 替换request里的参数部分
r = api.request(
    'tweets/search/%s/:%s' % (PRODUCT, LABEL),
    {
        'query': SEARCH_TERM,
        'point_radius': '-73.7781,40.6413,2km'
    }
)

关键细节提醒

  • 坐标顺序必须是经度在前,纬度在后,你之前的坐标顺序是对的,这点别改;
  • 半径必须带单位,比如'2km'或'1mi',不能只写2km(因为这是字符串类型);
  • 确保你的API密钥已经开通了30天归档数据的访问权限,且LABEL和你开发者账号里创建的环境名称完全匹配,这也可能导致请求失败。

内容的提问来源于stack exchange,提问作者FilipeTeixeira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:22:06