【问题标题】:Create an alias for a Google Service Account Email?为 Google 服务帐户电子邮件创建别名?
【发布时间】:2020-11-22 07:04:46
【问题描述】:

我与我的 Google 服务帐户电子邮件共享了一个 Google 表格,其内容如下:

myappname-service@myappname-266229.iam.gserviceaccount.com

这允许我的应用程序访问该 Google 表格。

我希望能够与自定义电子邮件地址(例如 google@myappname.com)共享 Google 表格,该电子邮件地址是那个丑陋的自动生成的服务帐户电子邮件 (myappname-service@myappname-266229.iam.gserviceaccount.com) 的别名。

我该怎么做呢?

编辑:

用于与 Google API 交互的代码示例

from google_auth_httplib2 import AuthorizedHttp
from google.oauth2 import service_account
import pygsheets

def _get_gc():
    scope = ['https://www.googleapis.com/auth/spreadsheets']
    credentials = service_account.Credentials.from_service_account_file(
        settings.GOOGLE_SERVICE_AUTH_FILE,
        scopes=scope,
    )
    http = AuthorizedHttp(credentials, http=HTTP)
    logger.info('Created GC creds, returning...')
    return pygsheets.authorize(custom_credentials=credentials, http=http)


def do_something(url):
    gc = _get_gc()
    spreadsheet = gc.open_by_url(url)

【问题讨论】:

  • 请按照How to Ask 中的建议添加您的搜索/研究工作的简要说明。
  • 网上根本没有这方面的内容,因此问题中缺少该信息。
  • 我认为您应该研究一下如何在 Google Drive、Google 服务帐户、Google Groups 和 G Suite 电子邮件别名上共享文件。此服务帐号是使用 G Suite 帐号还是 Google 普通帐号(通常是 gmail.com 电子邮件地址)创建的?
  • 只有普通账户可以有别名,服务账户不能。您可以在创建服务帐户时设置 @ 之前的内容,但域(@ 之后的内容)取决于您的应用程序名称,您不能为此创建别名。如果您提供有关您的情况的更多信息,也许可以找到解决方法?为什么要使用服务帐号?
  • @Rubén 这是一个 G Suite 帐户。

标签: google-sheets google-authentication google-cloud-iam


【解决方案1】:

问题 - 服务帐户不能有别名:

与常规帐户不同,服务帐户不能有别名。他们的电子邮件地址定义为:

  • 对应项目的名称。
  • 服务帐户的名称。

你不能给它额外的别名。

解决方法 - 冒充普通帐户:

如果您想避免与自动生成的服务帐户电子邮件地址共享 Google 表格,但又想继续使用服务帐户与 API 进行交互,那么您最好的选择是与常客共享表格具有可接受的电子邮件地址的帐户,并在与 API 交互时使用服务帐户模拟此常规帐户

1。委派全域权限:

关于服务帐户的最有用的事情之一是,您可以授予它模拟您域中的任何用户并代表它访问数据的能力。这称为域范围委派,可以通过以下these steps 为服务帐户激活它:

重要提示:您需要成为 G Suite 域的管理员才能委派域范围的权限

2。冒充:

此时,您的服务帐户可以模拟帐户中的任何用户。要实际模拟帐户,您只需在构建凭据时指定要模拟的帐户。

在您的具体情况下,您需要在调用from_service_account_file 时提供参数subject,正如您在this page 的域范围委派部分中看到的那样:

    credentials = service_account.Credentials.from_service_account_file(
        settings.GOOGLE_SERVICE_AUTH_FILE,
        scopes=scope,
        subject="your-account@your-domain.com"
    )

参考:

【讨论】:

  • 我好像弄错了,我实际上没有“G Suite”帐户。因此,当我尝试在 1.“从您的 G Suite 域的管理控制台中转到主菜单..”中执行此步骤时,我会收到此错误消息。 “admin.google.com 仅用于 G Suite 帐户。普通 Gmail 帐户不能用于登录 admin.google.com” 知道如何继续吗?
  • stackoverflow.com/a/45849773 建议我需要一个 G-Suite 帐户来执行此操作。如果我需要这样做,这不是世界末日。
  • @Richard 当然,您需要一个 G Suite 帐户(实际上,您需要成为 G Suite 域的管理员)才能使用!域范围的委派意味着服务帐户可以模拟您 G Suite 域中的任何用户。
  • 我能够完成这项工作。 1.创建一个GSuite帐户。 2. 邀请该帐户成为“所有者”;在我现有的服务帐户上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2011-11-16
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2011-08-05
  • 2017-03-13
相关资源
最近更新 更多