【问题标题】:Your application has authenticated using end user credentials from the Google Cloud SDK您的应用已使用来自 Google Cloud SDK 的最终用户凭据进行身份验证
【发布时间】:2020-01-02 16:36:59
【问题描述】:

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

gcloud、GOOGLE_APPLICATION_CREDENTIALS、gcloud auth activate-service-account 和 set project property 从教程中启用,

但我仍然收到异常消息“您的应用程序已使用来自 dialogflow.googleapis.com 不支持的 Google Cloud SDK 或 Google Cloud Shell 的最终用户凭据进行身份验证。”

请帮忙

【问题讨论】:

    标签: c# .net api dialogflow-es gcloud


    【解决方案1】:

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

     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
    

    然后你就可以继续教程了

    【讨论】:

      【解决方案2】:

      Google Application Default Credentials (ADCs) 是一种用于简化 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 的信息,请参阅 here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-27
        • 2020-07-13
        • 2021-10-15
        • 2022-01-27
        • 2019-12-31
        相关资源
        最近更新 更多