【问题标题】:IBM Watson UnAuthorizedIBM Watson 未经授权
【发布时间】:2020-04-12 13:52:19
【问题描述】:

我实现了 IBM watson Assistant,它在 android 调试上运行良好。当我构建一个签名的 apk 时,问题就来了。它总是说未经授权。我不认为它是关键,因为它在调试模式下工作正常。我需要一些帮助,因为该项目正在进行中。 到目前为止,我尝试的是更改 IBM 云中的密钥并尝试了其他密钥,但它引发了我认为是由错误密钥引起的未找到异常。我应该允许 IBM 云中的某些东西用于签名的 apk 吗?或者是否有来自签名 apk 的证书,我必须上传到 IBM 云中? 我正在使用 IBM watson Assistant v2

private Assistant watsonAssistant;
private Response<SessionResponse> watsonAssistantSession;

private void createServices() {
    watsonAssistant = new Assistant("2020-04-01", new IamAuthenticator(getString(R.string.assistant_apikey)));
    watsonAssistant.setServiceUrl(getString(R.string.assistant_url));
}

private void sendMessage(){
    Thread thread = new Thread(() -> {
                    try {
                        if (watsonAssistantSession == null) {
                            ServiceCall<SessionResponse> call = watsonAssistant.createSession(new CreateSessionOptions.Builder().assistantId(getString(R.string.normal_assistant_id)).build());
                            watsonAssistantSession = call.execute();
                        }
                        MessageInput input = new MessageInput.Builder()
                                .text(userInput)
                                .build();
                        MessageOptions options = new MessageOptions.Builder()
                                .assistantId(getString(R.string.normal_assistant_id))
                                .input(input)
                                .sessionId(watsonAssistantSession.getResult().getSessionId())
                                .build();
                        Response<MessageResponse> response = watsonAssistant.message(options).execute();
                        if (response.getResult().getOutput() != null && !response.getResult().getOutput().getGeneric().isEmpty()) {
                            List<RuntimeResponseGeneric> responses = response.getResult().getOutput().getGeneric();
                            for (RuntimeResponseGeneric r : responses) {
                                switch (r.responseType()) {
                                    case "text":
                                        aiResponse = r.text();
                                        aiConversationList.add(new AIConversation(r.text(), "ai", System.currentTimeMillis()));
                                        break;
                                    default:
                                        Log.e("Error", "Unhandled message type");
                                }
                            }
                            runOnUiThread(() -> {
                                sendConvoToServer(userInput, aiResponse);
                                txtWelcomeAI.setVisibility(View.VISIBLE);
                                aiAdapter.notifyItemInserted(aiConversationList.size() - 1);
                                userInputTxt.setEnabled(true);
                                pRecyclerView.scrollToPosition(aiConversationList.size() - 1);
                                aStatus.setText("online");

                            });
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        Log.e("IBM_EXCEPTION", e.toString());
                        aiConversationList.add(new AIConversation("Oops! Something went wrong", "ai", System.currentTimeMillis()));
                        aiAdapter.notifyItemInserted(aiConversationList.size() - 1);
                        runOnUiThread(() -> {
                            pRecyclerView.scrollToPosition(aiConversationList.size() - 1);
                            aStatus.setText("online");
                            userInputTxt.setEnabled(true);
                        });
                    }
                });
                thread.start();
}

【问题讨论】:

  • 分享代码和详情
  • @data_henrik alerady 共享
  • 错误信息和堆栈是什么?什么引发了错误?
  • @data_henrik 2020-04-12 19:32:16.061 5644-5800/? W/System.err:c.e.a.a.a.c.b.j:未经授权

标签: android ibm-cloud ibm-watson


【解决方案1】:

如果其他人在调试和发布 apk 之间会遇到像我一样的问题,请尝试检查您是否进行了混淆处理。如果是这样,那么混淆可能是一个问题。至少对我来说是这样。因此,要么在应用级别禁用 build.gradle 的混淆,要么在 proguard-rules 中添加一些规则

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多