通过javascript SDK

时间:2015-07-27 05:31:18

标签: google-drive-api

我正在开发一个用户可以创建列表并公开共享的应用程序。列表的内容由我的站点作为网页呈现,但也作为创建它的用户驱动器中的文本文件存在。一切都是通过javascript进行的,并且运行良好,但我目前正在使用https://www.googleapis.com/auth/drive范围。

这是一个非常可怕的许可,所以我想放弃它。但是,当用户尝试读取文件时,如果他们只有https://www.googleapis.com/auth/drive.file范围,则在我通过共享流程运行它们之前,共享文件(由id访问)不存在。

我的猜测是虽然这是我的应用程序中创建的文件,但该文件从未在我的应用程序中由查看用户打开,因此它不符合该范围。这看起来有点傻,因为任何人(即使他们没有以任何用户身份登录)都可以仅使用其ID从谷歌下载该文件。

我想避免通过共享链接流程运行它们,因为如果用户尚未登录我的应用程序,它们或多或少地滞留在该屏幕上。该应用程序未作为该文件类型的查看器安装,因此它们不会作为用于打开它的建议应用程序显示。

我做错了什么,或者是否真的没有办法支持这个看似非常常见的用例,即通过应用程序打开网址让用户能够分享他们文件的链接?

我不明白为什么我需要完全访问用户的驱动器,因为我正在尝试访问甚至不在其驱动器中的文件。

注意:我也在文件的顶部安装了realtime-api,这也很有效,但是基本上没有任何关系。

一些相关的代码段在文件上创建和设置权限:

创建文件

gapi.client.load('drive', 'v2', function() {
    var insertHash = {
        'resource': {
            mimeType: 'application/vnd.mysite.com',
            title: title
        };
    };
    gapi.client.drive.files.insert(insertHash).execute(next);
});

授予每个人权限

gapi.client.drive.permissions.insert({
    fileId: $scope.id, resource: {
        type: 'anyone',
        role: 'writer'
    }
}).execute(function(resp) {
    console.log(resp);
});

尝试以查看方式访问该文件,但没有https://www.googleapis.com/auth/drive范围

gapi.client.drive.files.get({fileId: $scope.id}).execute(function(resp) {
    console.log(resp);
    next(resp);
});

0 个答案:

没有答案