Python调用Foursquare API获取场地详情时出现认证错误
Foursquare API 请求URL拼接错误修复
你手动拼接URL时犯了两个关键错误:
- 错误地将venue_id作为查询参数(
?venue_id=xxx)放在路径后,但Foursquare的场馆详情API要求venue_id是URL路径的一部分(即/venues/{venue_id}) - URL中出现了两个
?,第二个?会被服务器当作普通字符处理,导致后面的client_id、client_secret等认证参数无法被识别,因此返回认证失败错误
修复后的字符串拼接代码
VENUE_ID = '4e96cf73b8f7d8c690f48384' CLIENT_ID = '[my client id]' CLIENT_SECRET = '[my client secret]' VERSION = '20180604' # 修正URL格式:venue_id放在路径中,查询参数只用一个?,用&连接 url = 'https://api.foursquare.com/v2/venues/{}/?client_id={}&client_secret={}&v={}'.format( VENUE_ID, CLIENT_ID, CLIENT_SECRET, VERSION ) detail_results = requests.get(url).json()
更推荐的写法(使用requests的params参数)
手动拼接URL容易出现格式错误,建议直接用requests的params参数传递查询参数,自动处理URL编码和格式:
VENUE_ID = '4e96cf73b8f7d8c690f48384' CLIENT_ID = '[my client id]' CLIENT_SECRET = '[my client secret]' VERSION = '20180604' url = f'https://api.foursquare.com/v2/venues/{VENUE_ID}/' params = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'v': VERSION } detail_results = requests.get(url, params=params).json()
内容的提问来源于stack exchange,提问作者Yankzz
相关产品推荐
相关产品推荐

