我正在尝试使用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)
.addView(new google.picker.DocsUploadView())
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
}
// callback implementation.
function pickerCallback(data) {
var url = 'nothing';
if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
var doc = data[google.picker.Response.DOCUMENTS][0];
url = doc[google.picker.Document.URL];
title = doc.name;
id = doc.id;
type = doc.type;
embed = doc[google.picker.Document.EMBEDDABLE_URL ];
}
答案 0 :(得分:2)
感谢Google朋友关于Google Plus的Google云端硬盘开发者讨论的帮助,回答了我自己的问题:
这确实有效。我在我的选择器实现中使用了错误的App_ID - 我只需要在客户端ID的开头使用数字字符串。另一个问题是,它不适用于localhost,仅适用于生产。
在此进行全面讨论:https://plus.google.com/u/0/108228914813783364664/posts/RgvmZwJcbE8
答案 1 :(得分:0)
如果您要修改的文件不是由您的应用程序创建的,则drive
范围之外的范围不会受限制。