问题描述
我正在尝试使用 Google Picker API 显示一个选择器供用户选择文件。我在网络应用程序中(在普通浏览器中)运行良好,但是当我在电子应用程序中运行相同的代码时,我在弹出的 iframe 中看到 400 消息,并收到以下控制台错误:
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://docs.google.com') does not match the recipient window's origin ('file://').
Failed to load resource: the server responded with a status of 400 ()
核心问题似乎是电子浏览器窗口的来源是file://
。这似乎会导致两个问题:
- (铬)浏览器安全性阻止跨域 iframe 通信
- Google 拒绝该请求,因为它不是来自有效来源(并且您无法在开发者控制台中将
file://
添加为来源)
我想不出任何方法来克服这些问题,但我希望有人有想法。
解决方法
您可以创建一个应用程序并以如下方式托管它,然后将电子 BrowserWindow 指向该 url。
https://app.yourdomain.name/gdrive/picker?token=access_token
我相信这应该可行。