Как авторизовать сервис IBM Cloud Watson с помощью авторизации IAM
Я пытаюсь авторизовать свою службу преобразования речи в текст IBM Cloud (авторизация IAM) через облачный Java SDK IBM. Хотя мой ключ API и URL-адрес службы верны, я все еще получаю 401 not authorized
с сервера.
Это мой код:
IamOptions iamOptions = new IamOptions.Builder().apiKey("dummy-api-key").url("dummy-url").build();
SpeechToText speechToText = new SpeechToText(iamOptions);
Это ответ сервера (логи)
Aug. 09, 2018 10:44:01 PM okhttp3.internal.platform.Platform log
INFO: --> POST https://iam.bluemix.net/identity/token h2 (135-byte body)
Aug. 09, 2018 10:44:02 PM okhttp3.internal.platform.Platform log
INFO: <-- 200 https://iam.bluemix.net/identity/token (181ms, 1759-byte body)
Aug. 09, 2018 10:44:03 PM com.ibm.watson.developer_cloud.speech_to_text.v1.websocket.BaseRecognizeCallback onError
SEVERE: Expected HTTP 101 response but was '401 Not Authorized'
java.net.ProtocolException: Expected HTTP 101 response but was '401 Not Authorized'
at okhttp3.internal.ws.RealWebSocket.checkResponse(RealWebSocket.java:216)
at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:183)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:844)
Я не включил свой код синтеза речи, так как он не имеет значения. Я проверил документы IBM Java и документы IAM. Вот как они инструктируют авторизацию в IBM Cloud.
Пример страницы IBM GitHub
1 ответ
Решение
Я получил это работает. Вы не передаете url
параметр, вместо этого установите его в качестве конечной точки.
IamOptions iamOptions = new IamOptions.Builder().apiKey("ElPOiM4sMnO4CzJq7LEx1h-4dgaQcCNS1WgGYsnNi59D").build();
SpeechToText speechToText = new SpeechToText(iamOptions);
speechToText.setEndPoint("https://gateway-syd.watsonplatform.net/speech-to-text/api");