无法访问 IBM Tone Analyzer API?
Can't access IBM Tone Analyzer API?
我正在尝试在 Laravel 应用程序中使用音调分析器 API。无论我尝试什么,我总是得到 {"code":401, "error": "Unauthorized"}
相同的响应。我怀疑我的问题是我不知道如何传入 API 键,但官方文档没有任何帮助,因为它只包含在命令行中使用 cURL 的说明。我的代码目前看起来像这样(尽管我已经尝试了许多其他迭代。如果有人需要我,我也可以 post 所有其他不成功的尝试):
$response = Curl::to('https://gateway-wdc.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&sentences=false')
->withOption('HTTPHEADER', array(
'Content-Type: application/json',
'apikey: REDACTED'))
->withData(array('text' => $text))
->asJson()
->post();
我 运行 Laravel 5.8 并使用 Ixudra 的 cURL 库。如果答案也使用这个库,我更愿意,但老实说,在这一点上,我准备放弃并使用 vanilla PHP,所以任何答案都会受到赞赏。
Ninja 编辑:我知道问题不是我的帐户/API 密钥,因为我尝试通过命令行访问 API 并且它按预期工作。只有在尝试从 Laravel.
访问它时才会出现此问题
这是401状态码,用于未授权访问,您需要先登录才能访问API。
我查看了文档,这里是 link,用于在使用前登录 api
tone-analyzer#authentication
对于某些服务实例,您可以使用 IAM 向 API 进行身份验证。您可以在授权 header 或 API 密钥中传递不记名令牌。令牌支持经过身份验证的请求,而无需在每次调用中嵌入服务凭证。 API 密钥使用基本身份验证。
IBM Watson 服务使用 Basic
格式的 HTTP Header 身份验证。因此,在终端中使用 curl
,您应该以 user:password
格式传递 -u or --user
标志,或者您也可以发送身份验证 Http Header 格式:[=15] =].
通过调整第二种形式的代码,您可以按如下方式进行:
$response = Curl::to('https://gateway-wdc.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&sentences=false')
->withHeader('Content-Type: application/json')
->withHeader('Authorization: Basic apikey:YOUR_TOKEN_HERE')
->withData(array('text' => $text))
->asJson()
->post();
将 YOUR_TOKEN_HERE
替换为您的 Tone Analyzer API 访问令牌。
https://developer.mozilla.org/docs/Web/HTTP/Authentication
https://www.ibm.com/support/knowledgecenter/en/SSGMCP_5.3.0/com.ibm.cics.ts.internet.doc/topics/dfhtl2a.html
希望对您有所帮助!
我正在尝试在 Laravel 应用程序中使用音调分析器 API。无论我尝试什么,我总是得到 {"code":401, "error": "Unauthorized"}
相同的响应。我怀疑我的问题是我不知道如何传入 API 键,但官方文档没有任何帮助,因为它只包含在命令行中使用 cURL 的说明。我的代码目前看起来像这样(尽管我已经尝试了许多其他迭代。如果有人需要我,我也可以 post 所有其他不成功的尝试):
$response = Curl::to('https://gateway-wdc.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&sentences=false')
->withOption('HTTPHEADER', array(
'Content-Type: application/json',
'apikey: REDACTED'))
->withData(array('text' => $text))
->asJson()
->post();
我 运行 Laravel 5.8 并使用 Ixudra 的 cURL 库。如果答案也使用这个库,我更愿意,但老实说,在这一点上,我准备放弃并使用 vanilla PHP,所以任何答案都会受到赞赏。
Ninja 编辑:我知道问题不是我的帐户/API 密钥,因为我尝试通过命令行访问 API 并且它按预期工作。只有在尝试从 Laravel.
访问它时才会出现此问题这是401状态码,用于未授权访问,您需要先登录才能访问API。
我查看了文档,这里是 link,用于在使用前登录 api tone-analyzer#authentication
对于某些服务实例,您可以使用 IAM 向 API 进行身份验证。您可以在授权 header 或 API 密钥中传递不记名令牌。令牌支持经过身份验证的请求,而无需在每次调用中嵌入服务凭证。 API 密钥使用基本身份验证。
IBM Watson 服务使用 Basic
格式的 HTTP Header 身份验证。因此,在终端中使用 curl
,您应该以 user:password
格式传递 -u or --user
标志,或者您也可以发送身份验证 Http Header 格式:[=15] =].
通过调整第二种形式的代码,您可以按如下方式进行:
$response = Curl::to('https://gateway-wdc.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&sentences=false')
->withHeader('Content-Type: application/json')
->withHeader('Authorization: Basic apikey:YOUR_TOKEN_HERE')
->withData(array('text' => $text))
->asJson()
->post();
将 YOUR_TOKEN_HERE
替换为您的 Tone Analyzer API 访问令牌。
https://developer.mozilla.org/docs/Web/HTTP/Authentication https://www.ibm.com/support/knowledgecenter/en/SSGMCP_5.3.0/com.ibm.cics.ts.internet.doc/topics/dfhtl2a.html
希望对您有所帮助!