我是使用 IBM Watson 服务的新手。我想测试语音转文本服务。我已经创建了一个新的 STT 服务并将其分配给创建的应用程序。根据文档,如果我想使用 STT 网络套接字端点,它需要网络令牌进行身份验证。我找到了关于如何接收 IBM 令牌的不同文章。第一个说,我需要从我的 API 密钥创建它,但是当我使用该令牌时,我不传递身份验证。另一种方法是按照此处的建议接收令牌,但为此,我需要用户名和通行证。文档说我可以在服务凭据中找到它们。但是我在服务凭据 JSON 中没有这样的字段。
接下来,我的服务凭据如下所示:
{
"apikey": "my_api_key",
"iam_apikey_description": "description",
"iam_apikey_name": "key_name",
"iam_role_crn": "my_role_crn",
"iam_serviceid_crn": "my_serviceid_crn",
"url": "my_url_endpoint"
}
请帮助我弄清楚如何使用api_key接收我的 STT 服务的访问令牌。
您可以使用以下 API 密钥访问 IBM Watson 服务 API。 为服务实例生成。您可以使用 API 密钥生成 IAM 访问令牌。如果您正在开发 需要与其他 IBM 云服务配合使用的应用程序
因此,您需要执行 POST 请求identity/token
方法通过传递 API 密钥来生成 IAM 访问令牌。cURL 的一个例子:
curl -k -X POST --header "Content-Type: application/x-www-form-urlencoded" --header "Accept: application/json" --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" --data-urlencode "apikey={your apikey}" "https://iam.bluemix.net/identity/token"
响应将是这样的:
"access_token": "eyJhbGciOiJIUz......sgrKIi8hdFs",
"refresh_token": "SPrXw5tBE3......KBQ+luWQVY",
"token_type": "Bearer",
"expires_in": 3600,
"expiration": 1473188353
调用 Watson Services 的示例:
curl -X GET
--header "Authorization: Bearer {token}"
"https://gateway.watsonplatform.net/discovery/api/v1/environments?version=2017-11-07"
Obs.:我建议你使用Python SDK。SDK 接受 API 密钥并管理令牌的生命周期,看看这个例子,你只需要传递你的令牌。
- 在此处查看有关使用 Watson 服务对 IAM 进行身份验证的更多信息。