首先,我查看了与类似问题和 Google Picker API 文档相关的多个 SO 问题,但找不到解决方案。链接在这篇文章的底部。
\n使用 Google auth2 JavaScript 库完成用户获取access_code 的ux_mode=\'popup\'登录过程后,我希望使用选择器JavaScript 库和获得的access_code打开 Google Picker 窗口。
\n检查access_code仍然有效后,当google.picker.PickerBuilder()对象通过picker.setVisible(true)设置为可见时,用户始终能够根据选择器对象的配置集选择文件。
\n在新的浏览器上,遇到此流程会导致 Google Picker 窗口要求用户再次登录。如果用户选择这样做,则会触发一个额外的弹出窗口,自动再次执行登录流程,然后通知用户“API 开发人员密钥无效”。
\n真正令人意想不到的是,如果用户刷新页面并重复完全相同的操作,Google Picker 就会完全按预期工作。复制异常行为的唯一方法是清除所有浏览器缓存、Cookie 和任何其他网站相关设置。\n
JavaScript 控制台上常见的错误有:
\n\n\n无法在 \xe2\x80\x98DOMWindow\xe2\x80\x99 上执行 \xe2\x80\x98postMessage\xe2\x80\x99:提供的目标源 (\xe2\x80\x98https://docs.google.com\xe2 \x80\x99) 与收件人窗口\xe2\x80\x99s 源 (\xe2\x80\x98http://localhost\xe2\x80\x99) 不匹配。
\n
\n加载 \xe2\x80\x9c 时发现无效的 X-Frame-Options 标头 https://docs.google.com/picker?protocol=gadgets&origin=http%3A%2F%2Flocalhost&navHidden=true&multiselectEnabled=true&oauth_token=...... ......: \xe2\x80\x9cALLOW-FROM http://localhost\xe2\x80\x9d 不是有效的指令。
\n …
我正在尝试使用 Google 文件选择器来选择一个文档,然后更新其权限。我不需要访问所有云端硬盘文件,只需访问选定的文件即可。
但是,在使用https://www.googleapis.com/auth/drive.file范围时,当我尝试更改文档的权限时出现 404 错误。如果我使用https://www.googleapis.com/auth/drive范围,我不会收到此错误,但这为我提供了比我需要的更多访问权限。
有没有办法让文件选择器使用更有限的https://www.googleapis.com/auth/drive.file范围?
这是我的文件选择器代码:
<!-- The standard Google Loader script. -->
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// Use the Google Loader script to load the google.picker script.
//google.setOnLoadCallback(createPicker);
google.load('picker', '1');
// Create and render a Picker object
function createPicker() {
var view = new google.picker.DocsView(google.picker.ViewId.DOCS);
view.setMode(google.picker.DocsViewMode.LIST);
//view.setMimeTypes("image/png,image/jpeg,image/jpg");
var picker = new google.picker.PickerBuilder()
//.enableFeature(google.picker.Feature.NAV_HIDDEN)
//.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.setAppId("<%= ENV['GOOGLE_ID']%>")
.setOAuthToken("<%= current_user.token %>") //Optional: The auth token used in the current Drive API session.
.addView(view) …Run Code Online (Sandbox Code Playgroud) 我有一个使用 GoogleFilePicker 获得的图像文件。使用 GoogleFilePicker 中的 FileId,我尝试使用以下 URL 检索文件:https://www.googleapis.com/drive/v3/files/${FileId}?alt=media&supportsAllDrives=true。
accessToken 的范围是“https://www.googleapis.com/auth/drive.file”。当我尝试使用主帐户(文件存在于其中)检索文件时,一切正常。但是,如果我想从另一个帐户(文件与该帐户共享)检索文件,我会遇到问题 404。
{
"error": {
"code": 404,
"message": "File not found: 1OQSUO7ObmEavKMXXkxNuG12vffqVi-Gk.",
"errors": [{
"message": "File not found: 1OQSUO7ObmEavKMXXkxNuG12vffqVi-Gk.",
"domain": "global",
"reason": "notFound",
"location": "fileId",
"locationType": "parameter"
}]
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以获取没有范围“https://www.googleapis.com/auth/drive”而仅使用“https://www.googleapis.com/auth/drive.file”的文件?