Я использую API Watson Java SDK , и моя Аутентификация была с использованием функции setUsernameAndPassword (имя пользователя, пароль), но теперь я хочу использовать Токены для аутентификации .
мой код "Имя пользователя и пароль"
mAssistant = new Assistant("2018-02-16");
mAssistant.setUsernameAndPassword(mUserName, mPassword);
InputData input = new InputData.Builder("Hello").build();
MessageOptions options = new MessageOptions.Builder("{workspaceId}")
.input(input)
.build();
MessageResponse response = mAssistant.message(options).execute();
System.out.println(response);
отлично работает.
Я использую этот метод, чтобы получить мой токен.
curl -X GET --user "{username}:{password}" "https://gateway.watsonplatform.net/authorization/api/v1/token?url=https://gateway.watsonplatform.net/conversation/api"
токены для аутентификации
Метод-1
mAssistant = new Assistant("2018-02-16");
Map<String, String> map = new HashMap<>();
map.put("X-Watson-Authorization-Token", "{token_string}");
mAssistant.setDefaultHeaders(map);
mAssistant.setSkipAuthentication(true);
InputData input = new InputData.Builder("Hello").build();
MessageOptions options = new MessageOptions.Builder("{workspaceId}")
.input(input)
.build();
MessageResponse response = mAssistant.message(options).execute();
System.out.println(response);
получить код ошибки
E/WatsonService: POST status: 403, error: Forbidden
com.ibm.watson.developer_cloud.service.exception.ForbiddenException: Forbidden
05-07 16:05:57.720 10392-10476/mvi.rcu W/System.err: at com.ibm.watson.developer_cloud.service.WatsonService.processServiceCall(WatsonService.java:401)
05-07 16:05:57.720 10392-10476/mvi.rcu W/System.err: at com.ibm.watson.developer_cloud.service.WatsonService$WatsonServiceCall.execute(WatsonService.java:459)
* * Метод тысяча двадцать-одина-2 * * тысяча двадцать-два
mAssistant = new Assistant("2018-02-16");
IamOptions options = new IamOptions.Builder()
.accessToken(token)
.build();
mAssistant.setIamCredentials(options);
mAssistant.setEndPoint("https://gateway.watsonplatform.net/conversation/api");
// do same ...
// mAssistant.message(options).execute();
// ...
получить сообщение об ошибке
W/System.err: com.ibm.watson.developer_cloud.service.exception.UnauthorizedException: Unauthorized: Access is denied due to invalid credentials. Tip: Did you set the Endpoint?
W/System.err: at com.ibm.watson.developer_cloud.service.WatsonService.processServiceCall(WatsonService.java:398)
W/System.err: at com.ibm.watson.developer_cloud.service.WatsonService$WatsonServiceCall.execute(WatsonService.java:459)
Если я хочу использовать токены для аутентификации с помощью API Watson Java SDK , что мне делать?