【问题标题】:GMAIL API - Does it support access using service accounts and a single access tokenGMAIL API - 它是否支持使用服务帐户和单个访问令牌进行访问
【发布时间】:2015-09-05 06:09:32
【问题描述】:

GMail API 是否支持服务帐户?

我曾尝试使用服务帐户获取访问令牌,但是在使用该访问令牌时,我收到“前置条件失败”错误。

在搜索中,我发现这个错误是因为服务帐户没有gmail邮箱,所以我应该使用JWT中的“sub”字段与域中的用户。

但是,当使用子字段并为 Gmail 范围授权服务帐户时,我没有获得访问令牌。它说“无效的授权,错误的请求”

任何帮助将不胜感激。


更新:我在使用子字段并使用令牌发出请求时设法获取了令牌。

但是,我不能使用一个令牌来访问所有用户的数据。委派域范围的访问权限对我来说意味着我可以获得一个令牌并访问所有用户数据。

目前,我需要使用服务帐户和子字段中的每个用户来分别获取每个用户的访问令牌

【问题讨论】:

    标签: gmail-api google-oauth


    【解决方案1】:

    在为其他用户调用 Gmail API 之前,您只需为要访问的每个用户使用 sub= 进行一次身份验证调用即可获取令牌。这就是 oauth2 域范围委派的工作方式: https://developers.google.com/identity/protocols/OAuth2ServiceAccount

    “一个令牌可以访问域中的所有用户”是一种可怕的安全做法,大多数 Google API 正在逐步淘汰(想象一下,如果该令牌被钓鱼!)。

    【讨论】:

    • 我认为服务帐户的全部意义在于避免为每个用户获取访问令牌,因为每小时为所有用户获取访问令牌是一个巨大的性能开销。在这种情况下,最好为每个用户使用刷新令牌,因为该请求看起来比使用服务帐户的请求轻
    • 似乎很难相信仅仅为用户获取令牌就是这么多开销(它是单个 HTTP 调用/用户,对吗?)。但是,是的,根据您在做什么以及您拥有多少用户,获取刷新令牌可能是值得的(即使它由您的客​​户端库透明地处理,这些仍然必须交换为访问令牌,对吧?:-p)
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2015-03-04
    • 2018-09-30
    • 2019-01-05
    • 2023-03-03
    • 1970-01-01
    • 2013-03-28
    • 2016-05-07
    相关资源
    最近更新 更多