使用HERE RouteMatching API获取Token后调用接口仍鉴权失败
问题排查与解决方案
1. 鉴权方式冲突导致权限验证失败
你的请求同时使用了OAuth 2.0 Bearer Token(请求头中)和API Key(URL参数中),HERE API不允许同时启用两种鉴权机制,必须二选一:
- 若使用Bearer Token鉴权,删除URL中的
apiKey=${props["here.access.key.id"]}参数; - 若使用API Key鉴权,删除请求头里的
Authorization字段。
修改后的请求URL示例:
const response = await fetch(`https://routematching.hereapi.com/v8/calculateroute.json?routeMatch=1&mode=fastest;car;traffic:disabled`, { method: 'post', body, headers })
2. 请求Content-Type设置错误
你上传的是KML格式文件,但设置的Content-Type为application/octet-stream,这会导致API无法正确解析请求体,需替换为KML对应的标准MIME类型:
const headers = { "Authorization": `Bearer ${token_data.access_token}`, "Cache-Control": "no-cache", "Content-Type": "application/vnd.google-earth.kml+xml" }
3. 验证Token的权限范围
检查获取Token时返回的scope是否包含RouteMatching API的访问权限。你当前的scope为hrn:here:authorization::org...,需确认你的HERE账号所属组织是否已开通RouteMatching API权限,或获取Token时是否请求了正确的权限范围。
若以上调整后仍报错,建议:
- 确认Token未过期(你的
expires_in为86399秒,约24小时,确保调用时Token在有效期内); - 检查KML文件格式是否符合HERE RouteMatching API的要求(比如包含合法的坐标点序列)。
内容的提问来源于stack exchange,提问作者kochizufan
相关产品推荐
相关产品推荐

