问题描述
这是我的cURL请求
curl https://geocode.search.hereapi.com/v1/geocode?q=5%20Rue%20Daunou%2C%2075000%20Paris%2C%20France -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXX"
这是回应
{"error":"Unauthorized","error_description":"Token Validation Failure - unrecognized kid null"}
我不确定发生了什么。我尝试了其他访问密钥。我产生了新的。但是请继续得到相同的错误。
解决方法
“访问密钥ID”不是您需要在 Authorization 标头中发送的令牌,这就是为什么您收到 “令牌验证失败” 。
但是,“访问密钥ID”是您要生成OAuth令牌所需的凭据参数之一,另一个参数是“访问密钥秘密”。
如果您尚未保存访问密钥密钥,请转到HERE Account Project Management Space并确保下载凭据文件:
在凭据文件中,请注意最后三行:
here.access.key.id = redacted
here.access.key.secret = redacted_redacted_redacted
here.token.endpoint.url = https://account.api.here.com/oauth2/token
然后,我们可以使用Postman生成OAuth令牌:
- 打开邮递员并创建一个新请求。
- 方法POST,网址:https://account.api.here.com/oauth2/token
- 转到 Auth 标签,然后选择:
- 类型:OAuth 1.0
- 将身份验证数据添加到请求标头(可能是默认选择)
- 签名方法:HMAC-SHA256
- 消费者密钥:输入
here.access.key.id
值 - 消费者的秘密:放置
here.access.key.secret
值
- 转到 Body 标签,然后选择:
-
x-www-form-urlencoded
- 键:
grant_type
,值:client_credentials
-
- 发送请求。您应该会收到一个访问令牌。那应该可以满足您的卷曲请求。
“身份验证”标签
“身体”标签
注意
为记录起见,以下内容(不使用OAuth而是在REST部分下找到“ API密钥”)也可以使用:
curl https://geocode.search.hereapi.com/v1/geocode?apiKey=<REST-API-KEY>&q=5%20Rue%20Daunou%2C%2075000%20Paris%2C%20France
不过,Geocode API Reference并未记录 apiKey 身份验证,这与其他HERE API(例如Routing,除了偶尔对curl请求进行实验之外,我不推荐使用它。