好的,所以我创建了一个ionic聊天机器人,向我的spring boot应用程序发出GET请求。我的spring boot应用程序使用RestTemplate交换方法对Dialogflow进行API调用。我已经为V1 API成功实现了它。但是对于V2集成,令牌将在1小时后过期。因此,我进行了一些研究,发现我必须设置一个安全帐户并按照流程进行操作,然后gcloud会给我新的令牌(在终端中执行它并使用邮递员进行API调用之后)。但是我无法在Eclipse中使用此命令。我收到错误==>“应用程序默认凭据”不可用。如果它们在Google Compute Engine中运行,则可用。否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS指向指向定义凭据的文件。
我通过按照文档步骤安装google cloud SDK进行了尝试,但这没有帮助。
我什至尝试使用GoogleCredential依赖项来尝试它,但是我无法获得访问令牌(将其记为null)。
任何帮助将不胜感激。
编辑。
已经回答了以下问题。
答案 0 :(得分:0)
您可以检查以下Java API for V2。我已经在我的Android应用中使用了它。 Here,我已经解释了如何集成到Android中。您可以遵循并修改以与Spring一起使用。我相信它会起作用。
答案 1 :(得分:0)
我能够使用命令==> gcloud auth application-default print-access-token在自己的spring boot应用程序中实现它。您将必须在系统上设置gcloud。设置步骤可在Dialogflow文档中找到。设置完成后,像在终端中一样运行此命令,它将每次为您提供更新的令牌。
上述问题的解决方案:
Runtime rt = Runtime.getRuntime();
String[] commands = { "gcloud command here" };
Process proc = rt.exec(commands);
proc.waitFor();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String updatedAccesssToken = null;
while ((updatedAccesssToken = stdInput.readLine()) != null) {
log.info("Updated access token :" + updatedAccesssToken);
return updatedAccesssToken;
}
while ((updatedAccesssToken = stdError.readLine()) != null) {
log.info("Error while fetching access token");
}
注意:将json文件添加到资源文件夹中。在运行配置中,将环境变量设置为Name:GOOGLE_APPLICATION_CREDENTIALS,value:文件的路径