【问题标题】:How to use dropbox API from chrome extension content script?如何使用 chrome 扩展内容脚本中的 Dropbox API?
【发布时间】:2014-11-07 19:53:56
【问题描述】:

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

  1. 一个是 devtools 页面,它是一个普通的 HTML 页面,其来源设置为 “chrome-extension:///filename”。在那个页面上我可以使用 Dropbox API 通过 HTML 弹出窗口获取用户确认,然后使用 保存的身份验证信息并通过 Dropbox javascript 库完成所有工作。

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

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

我无法在交互模式下调用authenticate,因为它会针对我注入的每个不同网页重新请求确认。并且在没有交互的情况下调用authenticate 将失败,因为内容脚本不与 devtools 扩展页面共享源、cookie 和 Web 存储:(。也许有一些方法可以“传递”来自扩展部分的 Dropbox 身份验证信息提供 GUI 并且用户成功确认对无 GUI 的扩展部分(如内容脚本或背景页面)的保管箱使用情况?

【问题讨论】:

  • 你应该让你的问题更容易阅读
  • @kzahel 谢谢!有什么具体建议吗?
  • @EyeofHell 查看 dropbox HTTP API。应该可以发出为 js 库提供动力的底层请求。这样您就可以准确地传递它需要进行身份验证的内容。
  • 我是 Dropbox 的开发倡导者。 :-)
  • 我的意思是我不知道它在 Chrome 扩展程序 AuthDriver 中的确切存储位置,我不知道您如何在应用程序的两个部分之间传递数据。但我想这是可能的。

标签: google-chrome-extension dropbox-api


【解决方案1】:

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

这只能在后台页面(在我的情况下为活动页面)中完成,但我将消息发送到以access_token 回复的活动页面,然后可以在 URL 中使用与'web' 技术 - 即在带有 XHR 的 HTTP 请求中。

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

我相信这可以适应 Dropbox。

【讨论】:

  • 虽然这并没有直接回答这个问题,但我个人认为这个答案展示了正确的技术——它只需要适应。最后作者选词不当,我现在编辑。请不要删除投票。
猜你喜欢
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2011-09-28
  • 2022-11-07
  • 2013-12-26
  • 1970-01-01
相关资源
最近更新 更多