如何使用chrome扩展内容脚本中的dropbox API?

时间:2014-02-02 17:09:11

标签: google-chrome-extension dropbox-api

如果我写一个chrome扩展名,它通常由多个部分组成:

  1. 一个是 devtools页面,这是一个普通的HTML页面,其原点设置为 “铬延伸://< GUID> /文件名”。在那个页面我可以使用 Dropbox API通过HTML弹出窗口获取用户确认然后使用 保存的身份验证信息,并通过Dropbox javascript库完成所有工作。

  2. 扩展的另一部分是执行的内容脚本 在指定的第三方网页(“注入”)的上下文中 与他们共享的原始cookie和网络存储。

  3. 是否可以在该内容脚本中使用Dropbox JavaScript库?

    我无法以交互模式呼叫authenticate,因为它会重新询问我注入的每个不同网页的确认。并且在没有交互的情况下调用authenticate将失败,因为内容脚本不与devtools扩展页面共享源,cookie和web存储:(。也许有一些方法来“传递”部分的Dropbox身份验证信息提供GUI的扩展程序,以及用户成功确认扩展程序使用的扩展程序部分的内容,如内容脚本或后台页面?

1 个答案:

答案 0 :(得分:4)

我已经设法让Facebook通过内容脚本从注入Web应用程序的代码中运行。我怀疑有多种方法,但我所做的是利用chrome.identity API为我做OAuth工作,特别是launchWebAuthFlow()

这只能在后台页面(在我的情况下是一个事件页面)中完成,但是我将消息发送到回复access_token的事件页面,然后可以在同一个URL中使用作为'web'技术 - 即在使用XHR的HTTP请求中。

您可以通过内容脚本发送/接收消息(使用document上的事件),但我决定在网络应用环境中使用directly using "external" messages API chrome.runtime.sendMessage()进行处理,并且后台脚本中的chrome.runtime.onMessageExternal()。这需要在manifest.json的"externally_connectable"部分为您注入代码的URL添加“匹配”。

我相信这可以使其适用于Dropbox。