我们需要开发一个内部 gmail 扩展来处理传入的电子邮件,允许收件人与我们的内部软件进行交互。我一直试图弄清楚如何在 Gmail 上下文小工具中使用 OAuth 2.0,但我找不到任何具体的文档。当我使用 contextual + google-oauth(Google 推荐的关键字)搜索堆栈溢出时,我找不到任何有用的东西。
在你给我标准页面之前,请确保它有这个:
- 至少,一个使用 OAuth 2.0 的 Gmail 上下文小工具 manifest.xml 示例
- 理想情况下,解释如何在域(而不是市场)部署它,所以我知道它实际上已经部署和测试。
例如,Contextual Gadgets 页面中的标准 hello 示例使用 OpenID(“openIdRealm”),并且是在 OAuth 2.0 之前编写的:
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/
但扩展控制台顶部说,“我们正在改善用户体验,试试新的开发者控制台”,它链接到:
开发者控制台:
- 它显示了之前在应用程序扩展控制台中创建的项目。我可以点击它打开一个大菜单(旁边,在左边)
- 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)
更重要的是,返回仪表板按钮将我带到既不允许开发也不允许部署的域管理站点:
顺便说一句,Apps Extensions Console 永远不会访问我创建的重定向页面,也永远不会读取我网站上的小工具规范文件(谷歌从未按承诺访问过),因此错误消息必须说 manifest.xml 没有使用 OAuth 2.0... 或 Apps Extensions Console 本身不使用它并责怪我!
因此,Gmail 上下文应用程序:
- 已弃用?
- 现在不可能了?
- 使用 OAuth 2.0 授权?如何?