无法访问IBM Tone Analyzer API?

时间:2019-04-30 02:00:41

标签: laravel php-curl tone-analyzer

我正在尝试在Laravel应用程序中使用Tone Analyzer API。无论我尝试什么,我总是得到与max = Math.max(max, array[i]); min = Math.min(min, array[i]); 相同的响应。我怀疑我的问题是我无法弄清楚如何传递API密钥,但是官方文档对它毫无帮助,因为它仅包含在命令行中使用cURL的说明。我的代码当前看起来是这样的(尽管我尝试了许多其他迭代。如果有人需要我,我也可以发布所有其他失败的尝试):

{"code":401, "error": "Unauthorized"}

我正在运行Laravel 5.8,并使用Ixudra的cURL库。我希望如果答案也使用了该库,但老实说,在这一点上,我随时准备放弃并使用原始PHP,以便对任何答案表示赞赏。

忍者编辑:我知道问题不是我的帐户/ API密钥,因为我试图通过命令行访问API,并且它按预期工作。该问题仅在尝试从Laravel访问时出现。

2 个答案:

答案 0 :(得分:7)

IBM Watson Services使用Basic格式的HTTP标头认证。因此,在终端中使用curl,您应该以{{1​​}}的格式传递-u or --user标志,或者您还可以发送user:password模式的Authentication Http Header。 / p>

通过调整第二种形式的代码,您可以按照以下步骤进行操作:

Basic user:password

用您的Tone Analyzer API访问令牌替换$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();

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

希望这会有所帮助!

答案 1 :(得分:3)

这是用于未经授权访问的401状态代码,您需要先登录才能访问API。

我为此检查了文档,这是链接,用于在使用API​​之前登录到api  tone-analyzer#authentication

对于某些服务实例,您可以使用IAM对API进行身份验证。您可以在授权标头或API密钥中传递承载令牌。令牌支持经过身份验证的请求,而无需在每个调用中都嵌入服务凭证。 API密钥使用基本身份验证。