当前位置: 首页 > 知识库问答 >
问题:

Gmail API域范围授权

文国发
2023-03-14

我正在使用Gmail API,并试图从公司下的所有用户那里获取电子邮件。但当我运行以下代码时:

function runAPI(auth) {
  var gmail = google.gmail('v1');
  gmail.users.threads.list({auth: auth, userId: '108800016305523828361'},'',function(err, response){
    if (err) {
      console.log("The API returned an error: " + err);
      return;
    }
    var threads = response.threads;
    console.log(threads);
  })
}

我得到错误:

API返回了一个错误:错误:委派被拒绝xxxx@xxxxx.com

在管理控制台中,我这样做:

作为客户端名称,我使用了client_secret.json文件中的id。对于范围,我给了它所有权限。

如何正确设置Gmail API的域范围授权?

共有2个答案

谈炳
2023-03-14

我认为谷歌的这篇文档可以帮助你做到这一点,只需按照以下步骤授权整个领域。

>

从控件列表中选择安全性。如果您没有看到安全性列表,请从页面底部的灰色栏中选择更多控件,然后从控件列表中选择安全性。如果看不到控件,请确保以域管理员身份登录。

从选项列表中选择显示更多,然后选择高级设置。

在“身份验证”部分中选择“管理API客户端访问”。

在“客户端名称”字段中输入服务帐户的客户端ID。您可以在“服务帐户”页面中找到服务帐户的客户端ID。

在“一个或多个API作用域”字段中,输入应用程序应被授予访问权限的作用域列表。例如,如果应用程序需要对Google Drive API和Google Calendar API进行全域访问,请输入:https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar.

在您的情况下,请将此范围用于Gmail API。

单击授权。

有关错误403或委托被拒绝的更多信息

>

GMail API超级管理员通过API访问其他用户帐户?

谢选
2023-03-14

设置很好,但是在代码中你做得不对。

此代码:

gmail.users.threads.list({auth: auth, userId:'108800016305523828361 '},'',函数(错误,响应)

明确地

userId应该是“me”,但是,在调用Gmail API之前,您需要在代码中使用服务帐户“JWT flow”,为您想要访问的Gmail用户检索oauth2凭据,如“准备进行授权API调用服务帐户域范围的委派”文档中所述。

具体来说,这将使用服务帐户的私钥请求为您想要的用户获取凭据(在setServiceAccountUser中设置您想要访问的域中用户的电子邮件)(user@example.com)请求中的函数)。然后你可以在调用Gmail API时使用GoogleCredential

 类似资料:
  • 我们需要访问谷歌日历API与服务器应用程序,以创建事件和邀请与会者。谷歌建议使用服务帐户的应用程序。 这里的主要问题是与会者邀请参加活动,因为如果没有域范围的授权,服务帐户就不能这样做(请参见img)。 组织不希望授予服务帐户访问所有用户数据的权限。所以,我想知道我们是否可以将域范围的授权委托给域的一个用户?(限制访问以使用其他用户的数据)。 附言。它只是关于谷歌日历API。 非常感谢你的帮助。

  • OWL:EquivalentClass的域和范围提出了一些我无法找到答案的问题。 首先,在OWL本身中,OWL:equivalentClass的域和范围被设置为rdfs:class。这个领域和范围似乎与规范(http://www.w3.org/tr/owl-ref/#equivalentclass-def)中给出的定义有些冲突,其中提到: “这样一个类公理[即OWL:EquivalentClass

  • 我有一个混合用户群的Keycloak领域。有些用户是原生的(本机用户),有些是通过自定义用户存储SPI实现提供的(联邦用户)。 当我执行OIDC登录时,Keycloak要求批准4个作用域(测试客户机、配置文件、电子邮件、角色)。该请求是用openID作用域执行的。Keycloak将其转换为这四个作用域。test-client是客户端名称。在管理UI中没有显示具有此名称的实际客户端范围。 使用本机用

  • 如何用推理器推断给定数据/对象属性的OWL域/范围? 例如,我有两个类、和一个数据属性。我希望这些类是的唯一域: 当我使用HermiT reasoner推断域时,我得到了类,而不是或: 我可以通过使用owl-api读取的来手动提取域,从而获得和类。但是我将无法获得其他可推断的类(例如,有一个等效的类)。 所以我想用推理机来推断结果,比如: 推理器:隐士、fact++、... SQWRL规则引擎:D

  • 问题内容: 我最近开始学习python3。 在 python 2 中,可以使用函数来分配列表元素。 如使用功能时在 python 3 中一样 为什么会这样呢? python为什么要进行此更改? 是恩赐还是祸根? 问题答案: Python 3 在很多地方使用了 迭代器 ,而 python 2 使用了 列表 。文档给出了详细的解释,包括对的更改。 优点是,如果您使用大范围的迭代器或映射, Python