首页 > 解决方案 > 如何解决 GCloud 权限?

问题描述

我正在尝试将我的 Android 应用程序发布到我们公司的 Play 商店。

在 Google API 访问页面上

在此处输入图像描述

我正在尝试创建新的服务帐户。这没用。

您至少缺少以下所需权限之一:项目

orgpolicy.policy.get resourcemanager.projects.get 检查文件夹、组织和项目 ID 是否有效并且您有权访问它们

我的 GCP 显示 myname@github.com 谷歌帐户。另一方面,Google API(Google Play Console) 显示 MYCOMPNAY Team 帐号。

如何解决这个 IAM 问题?

标签: google-cloud-platformgcloudgoogle-iam

解决方案


我会尽力回答,但这个问题缺乏一些细节。

正如错误所述,服务帐户是 Google 使用的一种独特类型的凭据,旨在供软件(而不是人类)用于与 Google 服务交互。您需要使用服务帐户而不是人工帐户来使用此服务是有道理的(尽管我不熟悉 Play 流程)。

与常规(人类)帐户(例如 yourname@github.com)不同,服务帐户归 Google 项目所有。创建服务帐户时,您需要将帐户范围限定为现有的 Google 项目。

Google 为不同的服务提供各种控制台。我最熟悉 Google Cloud Platform (GCP),因此我会使用 GCP 的 CLI(Cloud SDK aka gcloud)或https://console.cloud.google.com创建项目和服务帐户。你在用类似的东西吗?

不幸的是,我认为,Google 的工具将项目(即使这些是通用的 Google 资源)扩展到特定平台(云、Firebase、应用程序等),因此您可能无法通过例如 Cloud Console 看到所有项目。

所以....

如果你有一个 Play (!?) 控制台,应该有一种机制来列出|创建项目。如果您还没有,请创建一个项目来拥有您的服务帐户。然后该工具应提供创建服务帐户的机制。在那个项目下这样做。最后,您需要授予服务帐户权限,以便它可以执行您需要它执行的操作(例如发布您的应用程序)。

如果您在问题中添加更多详细信息,我可能会提供帮助。

注意人类(例如您的姓名@github.com 作为 Google 帐户)和服务帐户之间的一个区别是人类帐户使用 3-legged OAuth 而服务帐户使用 2-legged OAuth。这是因为服务帐户无法像人类用户那样与 OAuth 提示进行交互,并且当您需要使用人类与服务帐户时,它通常是一个很好的“提示”。

看:


推荐阅读