【问题标题】:Accessing Google docs from a chrome extension从 chrome 扩展程序访问 Google 文档
【发布时间】:2013-11-20 22:54:57
【问题描述】:

我知道 Google Drive API 允许与 Chrome 应用程序集成驱动器,但是扩展程序呢?可以/如何在 chrome 扩展中使用 Drive API?例如,我想要一个扩展,它会弹出一个列出用户文档的弹出窗口,我如何访问他们的驱动器框? 我知道它从身份验证开始,但我也不知道该怎么做。

【问题讨论】:

    标签: oauth google-chrome-extension google-drive-api google-chrome-app


    【解决方案1】:

    https://stackoverflow.com/a/58380137/8627279

    https://github.com/malik55khan/speardsheet-reader/

    演示:https://www.loom.com/share/d7d432c513a44b05a615fa0bd170fb23

    在 google 控制台中创建一个客户端身份验证密钥并选择 chrome 扩展。之后推送项目ID并保存。然后你会得到client_id。 下一步创建一个 api 密钥。

    添加一个新项目。 - 选择谷歌云或电子表格 - 启用 API。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      关于身份验证,chrome.identity 是开始的地方。

      快速浏览一下 GDrive App 我并没有真正发现任何特定于应用程序的东西(即扩展程序不可用的东西)。所以,我肯定会首先尝试将 GDrive 应用程序“移植”到扩展程序。

      还有一个我完全推荐的关于 Building Apps with AngularJS 的教程,它实际上会引导您构建 GDrive App。它非常酷,对如何设置身份验证相关的东西有相当详细的解释(当然,你必须稍微调整一下才能应用于扩展),你可以忽略 AngularJS 相关的东西(如果你不感兴趣 - 虽然 AngularJS 也很酷)。


      推荐路线图:

      1. 阅读有关 chrome.identity 的文档,以了解有关 API(*) 的一些知识。
      2. 学习tutorial,了解GDrive App的基本概念。
      3. 研究GDrive App的源码,了解tutorial未涉及的实现细节。
      4. GDrive App 移植到 Chrome 扩展程序。 (如果您在此过程中偶然发现特定问题,请随时返回此处。)

      [查看下面的 Zig Mandel's answer 以获得有趣的替代方案。]

      【讨论】:

      • 如果您对如何适应它有更多了解,因为目前这就是问题所在。有没有办法欺骗应用程序作为扩展程序工作?
      • 这真的比你想象的要容易得多。无需深入研究,您将不得不更改 background.js(可能完全摆脱它),将 main.html 设置为弹出窗口,获取与 oauth 相关的内容的自己的密钥,最后稍微更改清单(删除 app 并添加带有弹出窗口的 browser_action 并可能添加 background_page 尽管如果您可以处理弹出窗口中的任何内容,则可能没有必要)。
      【解决方案3】:

      一些答案​​是直接使用 chrome 标识或驱动 api。您不需要直接使用驱动器 api 来从用户驱动器获取文件 ID。如果您使用 chrome 身份,则必须在安装/升级扩展程序时包含明确的用户授权,并且用户在可能不需要/对用户风险更大时授予应用程序权限。避免在不需要时获取/存储令牌。 Google 有一个名为 docpicker 的库,它可以满足您的需要,并且不需要您处理授权,也不需要向用户请求授权。问题是您必须下载它并可能对其进行调整以从扩展中使用,因为文件需要在扩展中都是本地的。 我已经做到了,但不是针对这个特定的图书馆。一些库要求您摆弄 content_security_policy ,如下所示: "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",

      有关示例,请参阅 https://developers.google.com/picker/docs/index

      更新 13/122013 - Google 表示 Picker 将很快更改为需要 oauth 令牌

      【讨论】:

      • “身份尚未在公共 chrome 中可用”你从哪里得到的?
      • 是的,它从 chrome29 开始可用。但他需要做的就是显示文件选择器,这不需要任何 oauth。它使用一个 ghe 浏览器已经为 gdrive 提供。
      • 那么,您可以在不经过身份验证和授权的情况下查看自己的文件吗?再想一想,看得更深:)
      • @ExpertSystem 先试试看,再评论。我在几个客户项目中使用了 filePicker。是的,正如我所说,它不需要身份验证,因为它只是在窗口上加载驱动器 url。再一次,在你回复之前试一试。除了选择的文件的 ID(由用户通过浏览器操作)之外,该库不会让调用者访问任何内容。转到这个 Hello world 并告诉我代码在哪里处理或将 oauth 令牌传递给库? developers.google.com/picker/docs/index(然后你可以撤消你的 -1 :)
      • 我明白你的意思。 Google Picker 负责处理所需的 OAuth 过程。我误解了您关于 Google Picker 不需要用户授权 的原始声明。 (它实际上确实需要授权,但它是由用户登录他/她的 Google 帐户隐式授予的。这与 chrome.identity API 采用的方法完全相同,但它已经为我们实现了。)
      【解决方案4】:

      这非常简单。

      chrome.identity.getAuthToken() 将处理授权并返回访问令牌。然后,您可以在调用 Drive API 时使用该访问令牌设置 http 标头。

      这里有一些示例代码Chrome Manifest with Google API

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        • 2021-12-03
        • 1970-01-01
        • 2014-03-21
        • 2016-09-13
        • 2013-03-15
        • 2017-03-08
        相关资源
        最近更新 更多