错误:收到的令牌的令牌类型不正确 - 令牌应该是什么样子?

Mur*_*urp 5 azure azure-cognitive-services

我最近注册了 Microsoft Azure 并设置了一个认知服务帐户。根据文本翻译 API 文档中的说明,我能够使用交互式在线示例从/issueToken服务检索身份验证令牌。但是,如果我想使用该令牌(例如对于交互式/翻译示例),我最终会得到响应

<html><body><h1>Argument Exception</h1><p>Method: Translate()</p><p>Parameter: </p><p>Message: The received token is of incorrect token type.</p><code></code><p>message id=0344.V2_Rest.Translate.3D8A6FF1</p></body></html>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?令牌应该是什么样子以及我应该以什么格式提供它?在在线示例中,我通过将appid字段设置为“Bearer [token] ”来指定令牌,其中[token]是来自/issueToken的响应。

在我的例子中,令牌是一个 687 个字符长的字符串,可以分为三个部分(使用“.”作为分隔符)。前两部分是 base64 编码的,只包含一些保持不变的 JSON 编码信息(过期日期字段除外)。第三部分也是最后一部分每次都会发生变化,并且无法使用 base64 进行解码。我没有提供完整的令牌,而是尝试仅使用完整令牌的各种子字符串,但到目前为止没有任何成功。

我还尝试使用Authentication标头而不是appid字段通过curl 进行身份验证,这对我来说也不起作用。

Mur*_*urp 3

该标记实际上必须看起来像问题文本中所描述的那样(至少到目前为止)。我的问题是我使用了错误的订阅密钥。请注意:您为翻译 API 和语音 API 分别获得不同的密钥;即使两者都在认知服务下运行并且即使您通过相同的资源连接两者。

我将其发布作为我的问题的答案,因为我想确认上面列出的所有步骤都是正确的,并且因为我希望它可以帮助那些犯了与我相同错误的人。