Python Google Analytics OAuth服务帐户和2LO; "子"参数和域范围授权

时间:2016-03-12 18:31:01

标签: python google-app-engine oauth google-analytics

我在一些关于使用php参数的报告中读了一些评论(这是我理解的),当使用凭据对象传递给带有服务帐户的2LO的Google Analytics时,可以用来代替直接通过我在下面描绘的管理控制台授权帐户。

enter image description here

Analytics Google API Error 403: "User does not have any Google Analytics Account"

我的理解是错误的,如果我通过sub,它会取代在GA中手动设置帐户权限吗?

更重要的是,我被授予了通过帐户权限访问Google Analytics帐户的权限(因此我没有超级用户权限或访问超级用户电子邮件),我通过了{{1}使用该电子邮件的参数。尝试此路线时收到403错误。

简要说一下:

使用服务帐户访问权限的唯一方法是通过手动添加服务帐户电子邮件或通过'sub': 'superuseremail@account.com'访问超级用户电子邮件和管理帐户权限sub对象具有sub电子邮件的参数是否是正确的超级用户电子邮件?

1 个答案:

答案 0 :(得分:1)

TLDR:不!,Google Analytics不是G-Suite产品,服务帐户无权访问其他G-Suite帐户,未经直接授权。

如果您仔细查看有问题的source code for the method

def create_delegated(self, sub):
    """Create credentials that act as domain-wide delegation of authority.
    Use the ``sub`` parameter as the subject to delegate on behalf of
    that user.
    For example::
      >>> account_sub = 'foo@email.com'
      >>> delegate_creds = creds.create_delegated(account_sub)
    Args:
        sub: string, An email address that this service account will
             act on behalf of (via domain-wide delegation).
    Returns:
        ServiceAccountCredentials, a copy of the current service account
        updated to act on behalf of ``sub``.
    """
    new_kwargs = dict(self._kwargs)
    ...

您会看到此服务帐户将代表用户通过域范围的委派行事。

然后问题的答案是"是什么 Domain wide delegation"?

在企业应用程序中,您可能希望以编程方式访问用户的数据,而无需他们进行任何手动授权。在G-Suite域中,域管理员可以向第三方应用程序授予对其用户的域范围访问权限。数据 - 这称为域范围的授权。