Oauth 从chrome扩展访问Google文档

Oauth 从chrome扩展访问Google文档,oauth,google-chrome-extension,google-drive-api,google-chrome-app,Oauth,Google Chrome Extension,Google Drive Api,Google Chrome App,我知道Google Drive API允许驱动器与Chrome应用程序集成,但扩展又如何呢?我可以/如何在chrome扩展中使用驱动器API?例如,我想要一个扩展,它将有一个弹出窗口,列出用户的文档,我如何访问他们的驱动器盒? 我知道它是从身份验证开始的,但我也不知道该怎么做。关于身份验证,是开始的地方 快速查看一下,我并没有发现任何特定于应用程序的东西(即扩展无法使用的东西)。因此,我肯定会首先尝试将GDrive应用程序“移植”到一个扩展 还有,我完全推荐的关于的本教程,它实际上指导您如何构建

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

关于身份验证,是开始的地方

快速查看一下,我并没有发现任何特定于应用程序的东西(即扩展无法使用的东西)。因此,我肯定会首先尝试将GDrive应用程序“移植”到一个扩展

还有,我完全推荐的关于的本教程,它实际上指导您如何构建。它非常酷,对如何设置与身份验证相关的内容有相当详细的解释(当然,您必须稍微调整它以应用于扩展),您可以忽略与相关的内容(如果您不感兴趣,尽管也非常酷)


建议的路线图:

  • 阅读有关的文档,了解API(*)
  • 学习,了解的基本概念
  • 研究的源代码,了解中未涉及的实现细节
  • 移植到Chrome扩展。(如果在过程中遇到特定问题,请随时返回此处。)

  • [查看下面的了解一个有趣的选择。]

    这非常简单

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


    这里有一些示例代码

    一些答案直接使用chrome identity或驱动api。您不需要直接使用驱动器api来从用户的驱动器获取文件id。如果您使用chrome identity,则在安装/升级扩展时,您必须包含明确的用户授权,此外,在用户可能不需要/风险更大的情况下,用户授予应用权限。避免在不需要时获取/存储代币。谷歌有一个名为docpicker的库,它做你需要的事情,不需要你处理授权,也不要求用户授权。问题是,您必须下载它,并可能对其进行修改,以便从扩展名中使用,因为扩展名中的文件必须都是本地的。 我这样做了,但不是为了这个图书馆。有些库要求您修改内容安全策略,如: “内容安全策略”:“脚本src'self”“不安全评估”;对象src'self'

    有关示例,请参见

    更新13/122013-谷歌表示,选择器不久将被更改为需要oauth令牌

    演示:

    在谷歌控制台中创建一个客户端身份验证密钥并选择chrome扩展。之后,推送项目id并保存它。然后您将获得客户id。 下一步创建api密钥

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


    希望它会更有帮助。

    你有没有可能知道更多关于如何适应它的知识,因为目前这就是问题所在。有没有什么方法可以愚弄一个应用程序作为一个扩展?这真的比你想象的要容易得多。如果不深入研究它,您将不得不更改
    background.js
    (可能会完全删除它),将
    main.html
    设置为弹出窗口,为oauth相关的内容获取自己的密钥,最后稍微更改清单(删除
    app
    并添加带有弹出窗口的
    browser\u action
    ,可能还有一个
    background\u页面
    ,但如果您可以从弹出窗口中处理任何内容,则可能不需要这样做)。“公共chrome中尚未提供身份信息”你从哪里得到的?是的,它是从chrome29开始提供的。但他所需要做的就是显示文件选择器,而这不需要任何oauth。它使用ghe浏览器已经为gdrive提供的一个。因此,你可以在没有经过身份验证和授权的情况下查看一个人的文件?再仔细想想:)@ExpertSystem首先尝试一下,然后发表评论。我在几个客户项目中使用了filePicker。是的,正如我所说的,它不需要身份验证,因为它只是在窗口上加载一个驱动器url。再一次,在你回复之前尝试一下。该库不允许调用者访问(由用户通过浏览器操作)拾取的文件ID之外的任何内容。转到这个Hello world,告诉我代码在哪里处理或向库传递oauth令牌?(然后你可以解开你的-1:)我明白你的意思。GooglePicker负责所需的OAuth进程。我误解了你最初关于Google Picker不需要用户授权的说法。(它确实需要授权,但它是由用户登录其Google帐户后隐式授予的。这与chrome.identity API采用的方法完全相同,但已经为我们实现了。)