无法从node.js上托管的网站向Google Dialogflow发送多条消息

无法从node.js上托管的网站向Google Dialogflow发送多条消息,node.js,amazon-ec2,dialogflow-es,Node.js,Amazon Ec2,Dialogflow Es,我正在玩GoogleDialogFlow,并在AmazonEC2实例上设置了一个nodejs,该实例连接到我们的GoogleDialogFlow实例。我基本上使用了修改后的示例。我使用下面的Google身份验证在本地和通过EC2实例连接到Dialogflow > export PROJECT_ID="{PROJEC_ID}" > gcloud config set project $PROJECT_ID > export GOOGLE_APPLICATIO

我正在玩GoogleDialogFlow,并在AmazonEC2实例上设置了一个nodejs,该实例连接到我们的GoogleDialogFlow实例。我基本上使用了修改后的示例。我使用下面的Google身份验证在本地和通过EC2实例连接到Dialogflow

> export PROJECT_ID="{PROJEC_ID}" 
> gcloud config set project $PROJECT_ID
> export GOOGLE_APPLICATION_CREDENTIALS="credentials.json" 
> gcloud auth login
当我在我的机器上本地运行它时,它会按预期工作。然而,当我在EC2实例上执行完全相同的操作时,我发送给Google Dialogflow的第一个查询就可以正常工作,但是所有后续调用都会返回以下错误

(节点:13650)未处理的PromisejectionWarning:错误:7 权限被拒绝:您的应用程序已使用最终用户进行身份验证 来自Google Cloud SDK或Google Cloud Shell的凭据 dialogflow.googleapis.com不支持。我们推荐 在gcloud中配置计费/配额\u项目设置或使用 通过身份验证/模拟服务帐户设置创建服务帐户。 有关服务帐户以及如何在中使用它们的更多信息 您的应用程序,请参阅


让我困惑的是,当我在本地运行它时,这不是一个问题,当我在EC2实例上使用相同的Google身份验证和示例网页时;第一个查询从Dialogflow返回预期的响应,但是任何其他查询都会导致上述错误。

我发现了问题所在。我正在使用sudo在EC2实例上启动服务器,该实例不访问环境变量,例如GOOGLE_APPLICATION_凭据。我只需要一套简单的sudo-E标志。

一个小提示。对于“GOOGLE_应用程序_凭据”,我没有上载.json文件,而是将json信息复制并粘贴到保存在EC2实例上的文件中。不确定这是否会造成不同的结果。