当前位置: 首页 > 知识库问答 >
问题:

您的应用程序已使用来自Google Cloud SDK的最终用户凭据进行身份验证

慕容齐智
2023-03-14

我对与集成的dialogflow detect intent函数有问题。网络应用

gCloud,GOOGLE_APPLICATION_CREDENTIALS,gCloud auth激活服务帐户和设置项目属性已从教程中启用,

但我仍然有一条例外消息:“您的应用程序已使用来自Google Cloud SDK或Google Cloud Shell的最终用户凭据进行了身份验证,dialogflow.googleapis.com不支持这些凭据。”

请帮忙

共有2个答案

墨翔宇
2023-03-14

Google应用程序默认凭据(ADC)是一种有用的工具,用于简化Google服务的身份验证。一般(!)您将希望在ADC中使用服务帐户。然而,为了发展的目的(也许是其他的!?)——可以改用最终用户凭据。

您似乎正在使用最终用户凭据(例如您的Google帐户)作为凭据,并且(在这种情况下)这是(DialogFlow)服务不允许的。您必须改为使用服务号。

@marian vladoi的回答是正确的,它提供了帮助您创建服务帐户的命令、服务帐户的密钥以及定义IAM权限。但是,我建议您随后通过导出环境变量GOOGLE\u APPLICATION\u CREDENTIALS而不是gcloud auth activate service account,将ADC配置为使用此服务帐户

因此:

PROJECT=[[YOUR-PROJECT]]
ACCOUNT="dialogflow"     # Or your preferred name
EMAIL="${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com"
FILE=./${ACCOUNT}.json

# Create the service account
gcloud iam service-accounts create ${ACCOUNT} \
--project=${PROJECT}

# Create a key for it
gcloud iam service-accounts keys create ${FILE}
--iam-account=${EMAIL} \
--key-file-type=json \
--project=${PROJECT}

# Grant the service account appropriate permissions
gcloud projects add-iam-policy-binding ${PROJECT} \
--member=serviceAccount:${EMAIL} \
--role=roles/dialogflow.client

NB我假设服务号只需要角色/dialogflow.client,但是您可能需要碰撞这个。见:https://cloud.google.com/iam/docs/understanding-roles#dialogflow-roles

如果您使用的是Linux,那么您可以:

export GOOGLE_APPLICATION_CREDENTIALS=${FILE}
# Run your app

在Windows上设置GOOGLE_APPLICATION_CREDENTIALS请参阅此处。

姚雅珺
2023-03-14

我认为您没有正确设置服务号并使用最终用户凭据进行身份验证。

 1. gcloud config set project your-project

 2. gcloud auth list
    ACTIVE  ACCOUNT
    * end-user-account@test.com

 3. gcloud iam service-accounts create dialogflow --description dialogflow --display-name dialogflow
    gcloud iam service-accounts list
    # dialogflow@your-project.iam.gserviceaccount.com

 4. gcloud iam service-accounts keys create key.json --iam-account dialogflow@your-project.iam.gserviceaccount.com

 5. gcloud projects add-iam-policy-binding your-project --member dialogflow@your-project.iam.gserviceaccount.com --role roles/owner

 6. gcloud auth activate-service-account dialogflow@your-project.iam.gserviceaccount.com  --key-file=key.json

 7. gcloud auth list
 # ACTIVE  ACCOUNT
  * dialogflow@your-project.iam.gserviceaccount.com

然后您可以继续学习教程

 类似资料:
  • 我已经浏览了很多帖子和文章,但没有找到一个简单的解决方案,下面我必须实现。 平台:Spring Boot 2。x、 嵌入Tomcat的x(Spring Security 5.x.x) 解决方案:使用许多客户端应用程序和许多最终用户的REST服务。 > 因此,我必须使用一次性令牌对上述应用程序进行身份验证。因此,我计划通过启用和来实现Spring OAuth2。对于每个应用程序客户端,我将生成一个令

  • 要求是实现一个登录表单,单击submit按钮时需要调用一个javascript,该javascript应该发布用户名/密码。 是否有方法从javascript向spring基本身份验证servlet传递凭据,使其验证请求。我们已经实现了AuthenticationProvider authenticate来执行验证。 http://java.sun.com/xml/ns/javaee/web-ap

  • 我试图在一个反应式Spring Boot应用程序中配置一个Spring Security性,该应用程序具有一个Vuejs前端,在未经身份验证时将用户重定向到外部OpenID提供程序(用于身份验证)。在用户通过OpenID提供程序进行身份验证并重定向回应用程序(前端)后,将根据OpenID提供程序的响应创建用户名密码身份验证令牌(身份验证),并手动进行身份验证。 但是,在执行此操作时,应用程序似乎无

  • 这是服务到服务身份验证中概述的规则的一个例外吗?该规则规定需要设置为接收服务的url(例如https://xxxxx.run.app)。和是一回事吗? 最后,除了使用googlecloudsdk(即imaging不存在)之外,是否还有其他方法使用用户帐户而不是服务帐户进行身份验证?

  • 嗨,好几天了,我都被困在这上面了!在使用本指南转换我的react应用程序后,我尝试使用KeyClope对我的electron应用程序进行身份验证。 当我运行'npm运行电子:dev'时,keyCloak会重定向到登录页面。然而,当我运行'npm运行电子:prod'这失败。 来自KeyClope服务器的日志显示: 请注意,重定向_uri是'file:///...“我相信这就是原因。 我也试图改变下面