调用Beam滑板车API获取位置时遇Unauthorized及curl(23)错误求助
问题排查与解决方案
1. 「Unauthorized」错误的修复方向
返回Unauthorized核心是认证环节失效,从这几个维度排查:
- Authorization头格式错误:绝大多数API要求认证前缀(比如
Bearer),你当前直接传入access code,尝试修改头为:--header 'Authorization: Bearer <你的access code>' - Access Code有效性问题:确认access code是否过期、是否包含车辆位置查询权限,或是获取流程是否完整(比如是否完成了OAuth2的token交换,而非仅拿到授权码)。
- User-Agent不规范:API可能校验客户端版本,把
latest-app-version替换为真实版本号(比如常见的2.100.0),修改后:--header 'User-Agent: escooterapp/2.100.0; ios'
2. 「Failed writing body」错误的修复
这个错误是因为URL里的未编码JSON被curl解析成了命令分隔符,导致请求被拆分,两种解决方式:
方式一:URL编码JSON参数
把JSON字符串做URL编码后再拼接,比如{"latitude":12.34,"longitude":56.78}编码后变为%7B%22latitude%22%3A12.34%2C%22longitude%22%3A56.78%7D,请求示例:
curl --request GET \ --url 'https://gateway.ridebeam.com/api/vehicles/getForH3/rider/detail/%7B%22latitude%22%3A12.34%2C%22longitude%22%3A56.78%7D' \ --header 'User-Agent: escooterapp/2.100.0; ios' \ --header 'Authorization: Bearer <你的access code>' | jq
方式二:用query参数传递坐标(更规范)
如果API支持,优先通过query参数传经纬度,避免路径拼接的编码问题:
curl --request GET \ --url 'https://gateway.ridebeam.com/api/vehicles/getForH3/rider/detail?latitude=12.34&longitude=56.78' \ --header 'User-Agent: escooterapp/2.100.0; ios' \ --header 'Authorization: Bearer <你的access code>' | jq
额外排查点
确认API端点要求:getForH3接口可能需要传递H3网格ID而非直接经纬度,部分滑板车API用H3网格划分区域,你可能误解了参数要求,需先将经纬度转换为H3索引再传递。
内容的提问来源于stack exchange,提问作者crust
相关产品推荐
相关产品推荐

