gcloud auth activate-service-account [错误] 请确保提供的密钥文件有效

gcloud auth activate-service-account [ERROR] Please ensure provided key file is valid

我已经花了好几个小时来解决这个问题,但似乎我无法激活服务帐户来在本地开发 App Engine 项目(如果我部署项目,它可以很好地进行身份验证,因为凭据是作为环境变量)。

问题

  1. 我在 GC 平台上的 IAM 下创建了一个新的服务帐户。
    服务账户创建正确 我可以通过控制台看到它

  2. 在服务帐户下我生成了一个新的 JSON 密钥 -> key.json

  3. 在我使用的控制台中 gcloud auth activate-service-account --key file=key.json

代码

 {    
      "type": "service_account",
    <br>      "project_id": "[project id]",
    <br>      "private_key_id": "[private_key_id]",
    <br>      "private_key": "[private_key]",
    <br>      "client_email": "[name]",
    <br>      "client_id": "[clien id]",
    <br>      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    <br>      "token_uri": "https://accounts.google.com/o/oauth2/token",
    <br>      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        <br>  "client_x509_cert_url": 
      "https://www.googleapis.com/robot/v1/metadata/x509/[client_email]"
       <br> }   

我收到错误消息 错误:(gcloud.auth.activate-服务帐户) 无法激活给定的服务帐户。请确保提供的密钥文件有效。


在尽我所能后,我发现文档中的服务帐户密钥确实具有不同的结构。 https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys 但是我不知道为什么下载的密钥结构不好。

有人遇到过这个问题吗?有什么解决办法吗?

我没有找到任何关于此的优秀文档,但您肯定想要第一种类型的文件,并且通过 Cloud Console 创建它应该可以。我相信它被称为 Google 凭据文件。下载的 JSON 文件应该类似于:

{
  "type": "service_account",
  "project_id": "project-id",
  "private_key_id": "some_number",
  "private_key": "-----BEGIN PRIVATE KEY-----\n....
  =\n-----END PRIVATE KEY-----\n",
  "client_email": "<api-name>api@project-id.iam.gserviceaccount.com",
  "client_id": "...",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/...<api-name>api%40project-id.iam.gserviceaccount.com"
}

您发布的 second link 还将创建一个服务帐户密钥和一个 Google 凭据文件,但它可能比您想要的更多工作(Google 凭据文件编码为privateKeyData 字段。

希望能解释这些文件;祝你认证顺利!我对此的唯一建议是,也许您拼错了命令? 应该是:

gcloud auth activate-service-account --key-file=key.json

鉴于您输入的内容

gcloud auth activate-service-account --key file=key.json

即,在 --key 之后添加 space。如果您弄明白了,请告诉我们!

Get token! A new browser window is being opened. Login/Select a Google account, accept the permissions and paste the authentication code below.

https://accounts.google.com/signin/oauth/error?authError=TOKEN

The developer hasn't given you access to this app. It's currently being tested and it hasn't been verified by Google. If you think you should have access, contact the developer

https://github.com/Melvin-Abraham/Google-Assistant-Unofficial-Desktop-Client/issues/678#issuecomment-1119102459