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

问题描述 投票:0回答:2

我对与 .net 应用程序集成的对话流检测意图功能有疑问。

gcloud、GOOGLE_APPLICATION_CREDENTIALS、gcloud auth activate-service-account 和设置项目属性已从教程中启用,

但是我仍然有一条异常消息:

“您的应用程序已使用来自dialogflow.googleapis.com 不支持的Google Cloud SDK 或Google Cloud Shell 的最终用户凭据进行了身份验证。”

请帮忙

c# .net dialogflow-es gcloud
2个回答
0
投票

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

 1. gcloud config set project your-project

 2. gcloud auth list
    ACTIVE  ACCOUNT
    * [email protected]

 3. gcloud iam service-accounts create dialogflow --description dialogflow --display-name dialogflow
    gcloud iam service-accounts list
    # [email protected]

 4. gcloud iam service-accounts keys create key.json --iam-account [email protected]

 5. gcloud projects add-iam-policy-binding your-project --member [email protected] --role roles/owner

 6. gcloud auth activate-service-account [email protected]  --key-file=key.json

 7. gcloud auth list
 # ACTIVE  ACCOUNT
  * [email protected]

然后您可以继续教程


0
投票

Google 应用程序默认凭据 (ADC) 是简化 Google 服务身份验证的有用工具。通常(!)您会希望将服务帐户与 ADC 一起使用。但是,出于开发目的(也许是其他目的!?),可以使用最终用户凭据。

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

@marian-vladoi 的答案是正确的,它提供了帮助您创建服务帐户、其密钥以及定义 IAM 权限的命令。但是,我建议您通过导出环境变量

GOOGLE_APPLICATION_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 我假设服务帐户只需要

roles/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

© www.soinside.com 2019 - 2024. All rights reserved.