javascript - Google Picker API Invalid origin value 错误
问题描述
今天,Google Picker 停止在我的 Google Sheets 插件中工作,而无需对代码进行任何更改。模态对话中的错误如下:
原始值无效。
控制台中的错误是:
无法在“DOMWindow”上执行“postMessage”:提供的目标来源(“https://docs.google.com”)与收件人窗口的来源(“https://n-a6p4dqsl***d6wq-0lu”不匹配-script.googleusercontent.com')
删除 postMessage.. 来自意外窗口
删除 postMessage.. 来自意外窗口
加载“https://docs.google.com/picker?protocol=gadgets&origin=https%3A%2F%2Fdocs.google.com%2F&sdr=true&title&oauth_token=<oathToken>&developerKey=时遇到无效的“X-Frame-Options”标头<developerKey>&hostId=n-a6p4dq***d6wq-0lu-script.googleusercontent.com&relayUrl=https%3A%2F%2Fn-a6p4dq***d6wq-0lu-script.googleusercontent.com%2Ffavicon.ico&nav=((% 22documents%22%2Cnull%2C%7B%22selectFolder%22%3Atrue%2C%22parent%22%3A%22root%22%7D)%2C(%22documents%22%2Cnull%2C%7B%22dr%22%3Atrue% 2C%22includeFolders%22%3Atrue%7D))&rpcService=qhurmoc5w4l7&rpctoken=xssf8g42xc2&thirdParty=true#rpctoken=xssf8g42xc2': 'ALLOW-FROM https://docs.google.com/'不是公认的指令。标题将被忽略。
可能该错误与我所做的这行代码有关setOrigin()
:
var picker = new google.picker.PickerBuilder()
.addView(driveView)
.addView(drivesView)
.hideTitleBar()
.setOAuthToken(token)
.setDeveloperKey(DEVELOPER_KEY)
.setCallback(pickerCallback)
--> .setOrigin(google.script.host.origin)
.setSize(DIALOG_DIMENSIONS.width - 2,
DIALOG_DIMENSIONS.height - 2)
.build();
但是这一行直接来自 Google Picker API 的文档,并且之前可以正常工作。如果我更改google.script.host.origin
,它https://docs.google.com
作为 url 返回到https://n-a6p4dqsl***6wcd6wq-0lu-script.googleusercontent.com
,我会得到相同的错误和一个新错误,所以不是这样。
我也无法将其添加为 GCP 项目中的授权 javascript 来源,因为它返回以下错误:
Invalid Origin:使用禁止域
(这已经有一段时间了)
这似乎是一个新错误,我在 Google 的问题跟踪器和 StackOverflow 上都找不到答案。
任何人都面临这个问题或知道如何处理它?
解决方案
结束,解决这个问题的唯一方法是在
从
docs.google.com/
至
docs.google.com
相反,
google.script.host.orgin 给出了导致错误的“https://docs.google.com/”。因此,您需要硬编码为
“https://docs.google.com”
谷歌最近做了一些改变,这可能会引发这个问题。
更新
您可以使用此功能 - 并调用 - ...... setOrigin(getOrigin())
function getOrigin() {
var url = google.script.host.origin;
return url.substr(url.length - 1) === "/" ? url.substr(0, url.length - 1) : url;
}
推荐阅读
- mysql - POST 以表达来自 React 表单的数据
- django - 将一个结果推送到另一个工作 django-rq
- r - 如何在 R 中显示或打印环境的内容
- android - Android / Gradle - 具有依赖项的工件(aar)
- ionic3 - indexOf 在 ionic3 中的数组中搜索对象时不起作用?
- xamarin - 将 Api.ai 安装到 xamarin 时出现问题
- angularjs - 检查用户是否在 AngularFire 中是匿名的
- c - C读取多个单词后跟一个整数
- ios - 如何在不从firebase For ios获取值的情况下读取父节点名称
- ios - mvvm 中的 UITextfield 委托方法