我在连接到google drive API时在我的localhost上收到此控制台错误,但我在脚本中配置的选择器成功显示了我的驱动器内容:
无法在'DOMWindow'上执行'postMessage':提供的目标来源(' https://docs.google.com ')与收件人窗口的来源(' http:// localhost:8000 ')不匹配.
加载" https://docs.google.com/picker?protocol=gadgets&origin=http%3A%2F%2Flocalho ... 2photos%22))&rpctoken = yxxydsx40r21&rpcService = 2dngvfb4tj9x&thirdParty = true" 时遇到无效的"X-Frame-Options"标题:'ALLOW-FROM http:// localhost:8000 '不是公认的指令.标题将被忽略.
我是否会忽略这一点,还是会给我带来麻烦?
我开始学习Google Drive Picker API并从我开始localhost(我已经为域创建了我的客户端ID和浏览器密钥http://localhost/,我的文件位置是localhost/ch1.html等.
这是我在文档的正文部分写的脚本:
<script type="text/javascript" src="https://apis.google.com/js/api.js?onload=onApiLoad"></script>
<script>
function onApiLoad(){
gapi.load('auth',{'callback':onAuthApiLoad});
gapi.load('picker');
}
function onAuthApiLoad(){
window.gapi.auth.authorize({
'client_id':'545195528713-tihc7u0hp9ihta5mrm4l0eon16fpjogi.apps.googleusercontent.com',
'scope':['https://www.googleapis.com/auth/drive']
},handleAuthResult);
}
var oauthToken;
function handleAuthResult(authResult){
if(authResult && !authResult.error){
oauthToken = authResult.access_token;
createPicker();
}
}
function createPicker(){
var picker = new google.picker.PickerBuilder()
.addView(new google.picker.DocsUploadView())
.addView(new google.picker.DocsView())
.setOAuthToken(oauthToken)
.setDeveloperKey('AIzaSyB3I3JOepScrZgySA9tBWL9pXAUaLJ-NFg')
.build();
picker.setVisible(true);
}
</script>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行该文档时,它什么都没显示.是不是我不能使用驱动器api localhost或我将不得不使用一些按钮来调用它或类似的东西请帮助.
测试示例 -
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Picker Example</title>
<script type="text/javascript" src="https://apis.google.com/js/api.js?onload=onApiLoad"></script>
<script>
function onApiLoad(){
gapi.load('auth',{'callback':onAuthApiLoad});
gapi.load('picker'); …Run Code Online (Sandbox Code Playgroud) 我在访问谷歌驱动器选择器时遇到以下错误,但是选择器正确显示没有任何错误.
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://docs.google.com') does not match the recipient window's origin ('http://localhost').
Invalid 'X-Frame-Options' header encountered when loading 'https://docs.google.com/picker?protocol=gadgets&origin=http%3A%2F%2Flocalho…%3Atrue%7D))&rpctoken=e2x1eop3h1rr&rpcService=2qeo0ns6gu13&thirdParty=true': 'ALLOW-FROM http://localhost' is not a recognized directive. The header will be ignored.
Run Code Online (Sandbox Code Playgroud)
PSB我的开发者控制台的截图
此外,我已经提到这个问题谷歌驱动器选择器 - 开发人员密钥无效错误,但我认为谷歌api有一些变化,所以这件事不起作用.
代码段 -
var picker = new google.picker.PickerBuilder()
.setLocale(lkGoogleSettings.locale)
.setOAuthToken(accessToken)
.setCallback(pickerResponse)
.setOrigin(lkGoogleSettings.origin);
Run Code Online (Sandbox Code Playgroud)
谢谢
今天 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();
Run Code Online (Sandbox Code Playgroud)
但这行代码直接来自 Google Picker API 的文档,并且之前工作正常。如果我更改google.script.host.origin,它会https://docs.google.com作为 url返回到https://n-a6p4dqsl***6wcd6wq-0lu-script.googleusercontent.com,我会收到相同的错误和一个新错误,所以不是这样。
我也无法将其添加为 GCP 项目中的授权 javascript 源,因为它返回以下错误:
无效的来源:使用了禁止的域
(这种情况已经有一段时间了)
这似乎是一个新错误,我无法在 Google 的问题跟踪器和 StackOverflow 上找到答案。
任何人都面临这个问题或知道如何处理它?
javascript google-apps-script google-picker google-cloud-platform
我在我的网站上使用Google Picker API.这是我的代码:
this.picker = new google.picker.PickerBuilder().
addView(new google.picker.DocsView(google.picker.ViewId.DOCS).
setIncludeFolders(true).
setOwnedByMe(true)).
addView(new google.picker.DocsView(google.picker.ViewId.DOCS).
setIncludeFolders(true).
setOwnedByMe(false)).
addView(google.picker.ViewId.RECENTLY_PICKED).
addView(new google.picker.DocsView(google.picker.ViewId.DOCS).
setStarred(true)).
setAppId(this.clientId).
enableFeature(google.picker.Feature.MULTISELECT_ENABLED).
disableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).
setOAuthToken(accessToken).
setLocale('es').
setTitle('Selecciona uno o varios archivos').
setCallback(this._pickerCallback.bind(this)).
build().
setVisible(true);
Run Code Online (Sandbox Code Playgroud)
这显示为(名称被审查,但他们正在显示他们应该):
问题是已加星标的DocsView,其标题为"Google云端硬盘".我想把它改成我选择的东西(DocsView的其余部分都有默认名称)或者只是"加星标",但我无法做到这一点.
有人知道我怎么能改变它?
我在我的网络应用程序中使用谷歌选择器允许用户浏览并从他的谷歌驱动器中选择文件.一旦他做出选择,选择器就会返回有关所选文件的各种数据,包括文件ID和URL.我的目标是将所选文件下载到服务器.如果我将URL传递给我的后端脚本,它将无法下载私有文件.我知道我可以使用提供的文件ID通过Drive API访问该文件,但我需要一个访问令牌,所以我需要让用户使用oauth流授予我权限.我不想那样做.如果用户使用谷歌选择器选择了一个文件,他隐含地给我的应用程序访问该文件的权限.为什么我无法获得无需令牌即可访问的公共下载URL?我相信这就是Dropbox选择器的工作原理.
我在这里遗漏了什么,有没有办法实现我想要做的事情而不经过oauth身份验证.所以,基本上我需要的是这个:
或者,我可以使用像这样的解决方案:
我需要帮助GMSAutocompleteViewController在我的应用程序中打开时在searchBar中设置文本.我GMSAutocompleteViewController在Google Place AutocompleteViewController中使用.
google-maps autocomplete google-places-api google-picker swift
我看到您可以使用Google Picker打开网络相册,但是您可以直接从云端硬盘转移到Picasa吗?
有没有办法显示谷歌驱动器选择器显示在自定义模式或div内?我有一个模态,其中将有多个提供者用户可以选择例如谷歌,保管箱.该模式包含其中的所有js和css文件.因此,当我点击谷歌驱动器时,选择器iframe嵌入到body我的模态中,虽然我的模态z-index是1030,而选择器iframezindex是2292.

我有一个WebApp,它将工作网站数据收集到Google表格电子表格中,并将工作网站照片收集到我为每个作业创建的Google云端硬盘文件夹中.必须在Google表格的单元格中查看部分(但不是全部)照片,以便可以将作业单打印为作业完成报告的一部分.
我使用Google Picker将文件上传到特定于工作站点作业的文件夹.我不确定从那里使用它们的最佳方法.
我已经成功设置了一个单元格公式,例如 =IMAGE("hllp://i.imgur.com/yuRheros.png", 4, 387, 422),但只能从网络上的其他地方提取图像.
使用像这样的永久链接技巧=IMAGE("hllp://drive.google.com/uc?export=view&id=0B8xy-TdDgbjiFoOldUlLT091NXM", 4, 387, 422)不起作用; 我认为它不会容忍Google在这些链接上执行的网址重定向.
我读过的另一种方法是将实际的blob写入单元格,但尚未尝试过.但是,我怀疑我将失去对后续报告格式的控制权.
也许我需要在几个单元格中以多种方式记录图像规范:
是否有一种编程方式来获取Google重定向的图像最终URL,相当于打开图像并手动复制URL?一个人可以永远相信它,还是会随着时间而改变?
更新:我错了= IMAGE("hllp://drive.google.com/uc?export = view&id = 0B8xy-TdDgbjiFoOldUlLT091NXM",4,387,422)无效.即使电子表格的所有者也是图像的所有者,也必须将图像共享给"具有链接的任何人".
我将继续录制1.hash key和2.dimensions作为我的解决方案,但我很高兴知道是否有其他人有更好的主意.
google-sheets google-apps-script google-drive-api google-picker
google-picker ×10
javascript ×5
google-api ×2
angularjs ×1
autocomplete ×1
css ×1
google-maps ×1
picasa ×1
swift ×1