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

如何设置跨域Gmail API的自定义签名

颛孙嘉玉
2023-03-14

我想将我的谷歌应用程序域上所有用户的签名设置为他们的姓名和职务。通过研究,我发现实现这一点的唯一自由方式是使用Gmail API。我只需使用网站上的快速入门指南,就可以获得该域名上所有用户的列表(包括所需信息、我想要设置签名的电子邮件地址、姓名、职务)https://developers.google.com/admin-sdk/directory/v1/quickstart/js.

在listUsers函数的末尾,我添加了loadGmailApi代码。加载api后,它将运行一个名为setSignatures的函数。

function setSignatures() {
    var request = gapi.client.gmail.users.settings.sendAs.update({
        'userId': email,
        'sendAsEmail': email,
        'signature': '<strong style="color: rgb(230, 145, 56); font-family: arial, sans-serif; font-size: large;">' + name + '</strong>'
    });

    request.execute(function(resp) {
        console.log(resp);
    });
}

变量“电子邮件”是我自己的时候,这是完美的,但是当它是其他人的时候,我会得到以下错误: 403代表团因“我的电子邮件”而被拒绝。我是一个超级管理员。

我现在发现我需要使用服务号。然后我完全遵循了这个指南如何获得谷歌服务号访问令牌javascript。唯一的区别是授权我使用

gapi.auth.authorize({

而不是

gapi.analytics.auth.authorize({

因为我不需要分析API。我希望这不会造成问题。我需要目录和gmail API。在上面链接中提供的代码的末尾,我加载DirectoryAPI()并运行代码以再次获取所有用户信息,如前所述。我甚至无法设置签名,因为在这一点上,我得到一个错误,说:401登录是必需的。

所以,如果我用自己的电子邮件尝试这个,我会得到403,当我尝试一个服务帐户时,我会得到401。上面说需要登录,我怎么才能登录?我以为服务帐户实际上不会登录,但我使用JWT来生成访问令牌。我授权

gapi.auth.authorize({
    'serverAuth': {'access_token': token},
    'scope': 'https://www.googleapis.com/auth/admin.directory.user',
    'client_id': 'myClientID'
});

我做错了什么?请帮忙。我需要知道如何“登录”或使用服务号进行身份验证,以便我可以更新签名。

共有1个答案

时宾实
2023-03-14

即使你是超级管理员,默认情况下也不能使用gmail api更改其他用户的电子邮件签名。

首先,您需要在google开发控制台中创建一个服务帐户,并为该帐户添加域范围的委派。

之后,你去你的谷歌管理员,并添加该服务帐户,该帐户具有API控制下所需的作用域。

然后需要在python脚本中使用这些凭据。

基本上,它允许你冒充其他用户并更改电子邮件签名。您不需要密码,因为服务帐户具有域范围的权限。下面的链接解释了如何做到这一点。

但是这个链接使用PHP描述了它,但是它仍然可以帮助您创建一个域范围的委托服务号。

https://moometric.com/integrations/gsuite/use-gmail-api-update-signatures-gsuite-users-php/

 类似资料:
  • 我正在用cakephp开发一个用户库,用于我的应用程序中的翻译操作。我想创造。po文件在Lib目录中,这就是为什么我在Lib目录中创建Locale文件夹,并在相应的语言目录中创建po文件。但问题是CakePHP在默认情况下是在其默认区域设置位置搜索po文件的。现在我的语言环境目录在Lib文件夹中。 我怎么能让cakephp搜索po文件在我自己的区域设置目录这是在Lib文件夹? 这是我的翻译课程代码

  • 使用指南 - 统计设置 - 统计规则设置 - 如何设置跨域监控 如图所示,在“管理-统计规则设置”中可以看到“跨域跟踪”功能。在“已设置跨域监控的网站域名”列表下,系统会展示基于您网站访问数据智能生成的受访域名列表,您可以直接将相关域名设置为跨域监控。

  • 在Java中,定义了与人们想要如何看待事物相关的事物(比如货币格式、月份名称以及一周开始的时间)。 解析月份名称时(使用)会变得很棘手。 如果使用或Sep的缩写形式是九月。 如果使用Sep在Java11中也有缩写形式。。。但是,当您尝试Java 17时,它有(因为Unicode CLDR端的更改,我问这是否正确)。 结果是,我的测试在尝试使用Java 17构建时开始失败。 我当前代码使用而不是

  • 我正在使用MPAndroidChart显示一个相对简单的条形图。 有2件事我需要设置,我不知道如何自定义: > 我需要为每个条添加文本,而不是简单的值,每个条本身也有样式。 在每个条的顶部,我需要放置各种类型的可绘制材料来覆盖它的宽度(例如一个条中高度为2dp的蓝色,或另一个条上高度相同的黄色渐变)。 下面是我需要做的一个演示: > 我知道我也可以通过使用添加图标,但这似乎不适用于应该使用整个条形

  • 问题内容: 我到处环顾四周,但找不到确切的答案。 我需要能够执行AJAX POST并发送自定义标头。我对客户端脚本和服务器端服务都具有完全控制权,因此,如果需要对任何一方进行任何调整才能进行此工作,则可以进行这些更改。 我目前正在使用jQuery,但是,如果jQuery无法做到这一点,并且我需要使用另一个完全没有问题的库。理想情况下,我宁愿坚持使用单个库(jQuery),但如果能解决我的问题,我很

  • 介绍: 现在基于css font-face的字体图标越来越流行。 这种图标具有矢量图的特点,可以不失真的自由缩放,还可以通过css来设置图标的颜色,还有就是网络上资源特别丰富。X5系统自带了数百个字体图标, 用户还可以通过配置使用自己下载的字体图标, 下边就介绍一下具体的使用方法。 首先以fortawesome 网站为例(网址:http://fortawesome.github.io/Font-A