我正在将我的应用程序移植到Electron,我很惊讶地发现Dropbox身份验证在这种环境中不起作用.它确实在Chrome中有效.
登录按钮保持禁用状态,标签显示在输入上方.
控制台中显示以下消息:
The Content-Security-Policy directive ‘worker-src’ is implemented behind a flag which is currently disabled.
我在OS X上使用dropbox@2.5.7,electron@1.7.7进行测试.
我发现了一个类似的问题,但似乎使用了不同版本的Electron并且有一个不同的错误信息:
Dropbox oauth view is not rendering properly
更新:
Content-Security-Policy消息似乎与Chrome版本有关.在Chrome 59中引入了worker-src指令,在Chrome 58中附带了electron@1.7.7.
https://www.chromestatus.com/feature/5922594955984896
我已经使用Chrome 59附带的electron@1.8.0进行了测试,并且控制台消息已经消失.但是auth页面的问题仍然存在.
最佳答案 发生这种情况是因为BrowserWindow默认启用了nodeIntergration标志.这与捆绑Dropbox的RequireJS实现冲突.
所以解决方案是在创建浏览器窗口时禁用nodeIntergration:
const win = new electron.BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: false
}
});
win.loadURL(link);
这是一个小型演示项目:
https://github.com/kenjiru/electron-dropbox-sample-app