18

我们需要开发一个内部 gmail 扩展来处理传入的电子邮件,允许收件人与我们的内部软件进行交互。我一直试图弄清楚如何在 Gmail 上下文小工具中使用 OAuth 2.0,但我找不到任何具体的文档。当我使用 contextual + google-oauth(Google 推荐的关键字)搜索堆栈溢出时,我找不到任何有用的东西。

在你给我标准页面之前,请确保它有这个:

  • 至少,一个使用 OAuth 2.0 的 Gmail 上下文小工具 manifest.xml 示例
  • 理想情况下,解释如何在域(而不是市场)部署它,所以我知道它实际上已经部署和测试。

例如,Contextual Gadgets 页面中的标准 hello 示例使用 OpenID(“openIdRealm”),并且是在 OAuth 2.0 之前编写的:

https://developers.google.com/gmail/contextual_gadgets

OAuth 2.0 中不允许使用 OpenID:

https://developers.google.com/apps-marketplace/practices#3_use_oauth20

您的应用程序不得使用 OpenID 或 OAuth1.0。任何此类使用的证据都将导致您的申请无法通过审核流程。

请注意,上下文小工具是客户端 Javascript 应用程序,与 Web 服务器应用程序和已安装的应用程序非常不同。所以 OAuth 2.0 应该像这样使用:

https://developers.google.com/accounts/docs/OAuth2#clientside https://developers.google.com/accounts/docs/OAuth2UserAgent

但是上下文小工具在容器中运行,该容器处理 OAuth 的第一次调用(谷歌调用,它使用令牌回调我们的网站......)。生活在客户端,上下文小工具“不能保密”。我们的网站(重定向页面,https://example.com/oauth2callback)需要将访问令牌(可能还有刷新令牌)保存到客户端的小工具代码可访问的会话中。

理想情况下,我不会使用 SSO,我认为它只是“部署在市场上的应用程序需要”。另一种部署是“为您的域”,它使用Google Apps Extensions Console

https://developers.google.com/google-apps/extensions-console/

但扩展控制台顶部说,“我们正在改善用户体验,试试新的开发者控制台”,它链接到:

https://console.developers.google.com/?redirected=true

开发者控制台

  • 它显示了之前在应用程序扩展控制台中创建的项目。我可以点击它打开一个大菜单(旁边,在左边)
  • APIs & Auth / Credentials -- 我为我的应用程序创建了客户端 ID 和密码。显然,我必须使用 Web 应用程序,而不是服务帐户或已安装的应用程序,因为我正在尝试访问一些用户私有数据(电子邮件访问),而不仅仅是 Google 服务,而且我不是独立安装的应用程序。

上下文小工具中没有任何地方可以报告此客户端 ID。是注册后忘记吗?

另外(一个错误?),即使我没有创建服务帐户凭据,权限也会在“服务帐户”下显示我的客户 ID。

然后是这个:我不知道如何通过这个新的开发者控制台在我的域上部署我的上下文小工具(它不是一个独立的应用程序)。在左侧的概览和计算选项卡下似乎只有与云部署相关的选项。

当我尝试从 Apps Extensions Console 进行部署时(据说没有被弃用,只是得到了改进),我收到了这个错误:

Google Apps Marketplace    (I never deployed to marketplace, only my own domain)
Application installation not allowed.
The OAuth1.0 version is no longer available.
Instead, try installing the OAuth2.0 version.
[Return to dashboard]   (button)

更重要的是,返回仪表板按钮将我带到既不允许开发也不允许部署的域管理站点:

https://admin.google.com/mydomain.com/

顺便说一句,Apps Extensions Console 永远不会访问我创建的重定向页面,也永远不会读取我网站上的小工具规范文件(谷歌从未按承诺访问过),因此错误消息必须说 manifest.xml 没有使用 OAuth 2.0... 或 Apps Extensions Console 本身不使用它并责怪我!

因此,Gmail 上下文应用程序:

  • 已弃用?
  • 现在不可能了?
  • 使用 OAuth 2.0 授权?如何?
4

4 回答 4

5

Google Contextual Gadgets的文档是一个糟糕的笑话——过时且错误,不要浪费你的时间。

SO上的答案让我更接近了,但我从来没有真正让事情奏效。

幸运的是,我最终找到了gmail.js,它允许我编写一个 Chrome 扩展来做我需要的事情......

1- 下载Gmail Chrome Extension Boilerplate项目,这是一个使用 gmail.js 的 Hello world 示例 chrome 扩展。

2- 将 main.js 文件中的 main 函数更新为如下内容:

var main = function(){

    gmail = new Gmail();
    gmail.observe.on("open_email", function(id, url, body, xhr) {

        // Inject a toolbar:
        var $email_body = gmail.dom.email_body();
        $email_body.prepend('<div class="my_toolbar"><a>Do something</a></div>');
    });
}

这会给你这个:

在此处输入图像描述

于 2016-02-04T03:56:43.140 回答
4

也有同样的问题。我(几乎)设法通过以下步骤将我的小工具放在我的域电子邮件中。这是我可以分享的;

1)通过( https://console.developers.google.com )创建了一个项目。在 API 侧导航菜单下打开 Marketplace SDK。打开后,转到页面顶部并单击 Google Apps Marketplace SDK 的“齿轮”。这将引导您进入一个带有(转到原始控制台)链接的页面。点击链接。

2)您应该被转发到一个表单页面。填写表格中的所有必填字段。检查 COB 扩展并在文本字段 Extractor Url 下声明您的提取器 ID(我使用了预装的提取器,尚未使用自定义提取器对其进行测试),通过文本字段 Gadget Url 声明您的小工具 url,然后选择范围。单击“添加”按钮,完成后单击“保存更改”按钮。

3) 转到 API 访问菜单,并创建一个 OAuth 2 客户端 ID。

以下是我不清楚这些步骤的地方,但我将分享我为在我的域中提供这些小工具所做的工作。

3)我点击了表格顶部的测试安装流程按钮..

4)我添加了管理员用户作为这个项目的编辑器。

5)然后我必须注销,清除缓存,以管理员/域用户身份登录,才能在电子邮件底部看到上下文小工具。

希望这可以帮助。

于 2014-10-26T22:54:38.870 回答
2

https://developers.google.com/gmail/contextual_gadgets中描述的方式似乎已经完全过时了。甚至 Google Apps 控制台中的小工具表单似乎也已过时。

您需要遵循以下说明:https ://developers.google.com/apps-marketplace/preparing

上下文小工具现在使用 API 控制台(不是应用程序控制台)开发,并且有一个表单来创建提取器等。

于 2014-12-23T15:11:57.937 回答
0

请按照以下步骤操作:

  1. 登录您的管理员 Gmail
  2. 打开新标签并输入http://console.developers.google.com
  3. 单击 Gmail 左侧面板中的 API 部分
  4. 选择以下 API
    i。gmail API
    二。谷歌市场 API
    三。日历 API
    iv。谷歌管理 SDK
  5. 启用上述所有 API 后,请打开 Google Apps Marketplace SDK 并单击配置链接(您必须生成客户端 ID)
  6. 用适当的数据填充数据,您还需要上传适当大小的图像
  7. 填写所有必填字段并按照 Google 的建议添加提取器。
    i) 参数名称应与上下文 API 一致,所有值均为“.*”,否则小工具将不会出现在 gmail 中
  8. 启用通用服务 URL
  9. 启用 COB 扩展
  10. 添加 Gmail 上下文小工具提取器,您可以为小工具添加多个提取器,但小工具 URL 应与所有提取器相同
  11. 您可以为每个提取器添加多个范围
  12. 保存所有更改。

就这样 !

您可以点击以下链接供您参考: https ://developers.google.com/apps-marketplace/preparing

于 2015-10-15T11:35:14.317 回答