这里 API 返回 Unrecognized Kid Null 错误

sea*_*ali 5 rest curl here-api here-maps-rest

这是我的 cURL 请求

curl https://geocode.search.hereapi.com/v1/geocode?q=5%20Rue%20Daunou%2C%2075000%20Paris%2C%20France -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXX"
Run Code Online (Sandbox Code Playgroud)

这是回应

{"error":"Unauthorized","error_description":"Token Validation Failure - unrecognized kid null"}
Run Code Online (Sandbox Code Playgroud)

我不确定发生了什么。我尝试了不同的访问密钥。我生成了新的。但不断收到同样的错误。

Mic*_*zos 8

“访问密钥 ID”并不是您需要在授权标头中发送的令牌,这就是您收到“令牌验证失败”的原因

然而,“访问密钥 ID”是您需要的凭据参数之一,以便生成 OAuth 令牌,另一个参数是“访问密钥秘密”。

如果您还没有保存访问密钥秘密,请转到您的HERE 帐户项目管理空间并确保下载凭证文件:

在此处输入图片说明 在此处输入图片说明

在凭证文件中,注意最后三行:

here.access.key.id = redacted
here.access.key.secret = redacted_redacted_redacted
here.token.endpoint.url = https://account.api.here.com/oauth2/token
Run Code Online (Sandbox Code Playgroud)

然后,我们可以使用 Postman 生成 OAuth 令牌:

  • 打开 Postman 并创建一个新请求。
  • 方法POST,url:https : //account.api.here.com/oauth2/token
  • 转到“身份验证”选项卡并选择:
    • 类型:OAuth 1.0
    • 向请求标头添加身份验证数据(可能是默认选择)
    • 签名方法:HMAC-SHA256
    • Consumer Key:放here.access.key.id
    • 消费秘诀:把here.access.key.secret价值
  • 转到正文选项卡并选择:
    • x-www-form-urlencoded
    • 键:grant_type,值:client_credentials
  • 发送请求。您应该会收到一个访问令牌。那个应该适用于您的 curl 请求。

身份验证选项卡

在此处输入图片说明

正文选项卡

在此处输入图片说明

笔记

作为记录,以下不使用 OAuth 而是在 REST 部分下找到的“API 密钥”也有效:

curl https://geocode.search.hereapi.com/v1/geocode?apiKey=<REST-API-KEY>&q=5%20Rue%20Daunou%2C%2075000%20Paris%2C%20France
Run Code Online (Sandbox Code Playgroud)

然而,与其他 HERE API(例如Routing )不同,Geocode API Reference没有记录apiKey身份验证,除了偶尔使用 curl 请求进行实验外,我不建议使用它。