如果我写一个chrome扩展名,它通常由多个部分组成:
一个是devtools页面,它是一个普通的HTML页面,其原始设置为“ chrome-extension:// <guid> / filename”。在该页面上,我可以使用Dropbox API通过HTML弹出窗口获取用户确认,然后使用保存的身份验证信息并通过Dropbox javascript库完成所有工作。
扩展的另一部分是内容脚本,该脚本在指定的第三方网页(“注入”)的上下文中执行,并与它们共享原始Cookie和Web存储。
是否可以在该内容脚本中使用Dropbox JavaScript库?
我无法authenticate
以互动方式致电,因为它将重新询问我所注入的每个不同网页。authenticate
由于内容脚本不会与devtools扩展页面共享原始信息,Cookie和Web存储,因此,如果没有交互式调用,将失败:(。也许可以通过某种方式从提供GUI的扩展部分“传递” Dropbox身份验证信息以及用户在何处成功确认对扩展程序的缺少GUI的部分(如内容脚本或背景页面)的保管箱使用情况?
我设法使Facebook通过通过内容脚本注入到Web应用程序中的代码工作。我怀疑有多种方法,但是我所做的是利用chrome.identity API为我完成OAuth工作,特别是launchWebAuthFlow()
。
这只能在后台页面(在我的情况下是事件页面)中完成,但是我将消息发送到事件页面,该事件页面用回复,access_token
然后可以在URL中使用“ Web”技术,即在XHR的HTTP请求中。
您可以通过内容脚本(使用上的事件document
)发送/接收消息,但是我决定直接chrome.runtime.sendMessage()
在Web应用程序上下文和chrome.runtime.onMessageExternal()
后台脚本中使用带有API的“外部”消息来执行此操作。这要求"externally_connectable"
在manifest.json的一部分中为要注入代码的URL添加“匹配项” 。
我相信可以对其进行调整以使其与Dropbox一起使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句