在chrome扩展中使用gapi.client.drive的正确方法

时间:2017-10-22 17:17:04

标签: javascript google-chrome google-chrome-extension gapi

我正在尝试使用驱动器来保存Chrome扩展程序中的数据。

首先,我为manifest.json

设置了所需的选项
"oauth2": {
    "client_id": "999999.apps.googleusercontent.com",
    "scopes": [
        "https://www.googleapis.com/auth/drive.appdata"
    ]
},

然后尝试获取文件列表:

$.getScript("https://apis.google.com/js/client.js", function () {

    gapi.load('client', function () {

        console.log("gapi.client is loaded")

        gapi.client.load('drive', 'v3', function () {

            console.log("gapi.client.drive is loaded");

            chrome.identity.getAuthToken({'interactive': true}, function (token) {

                gapi.client.setToken({access_token: token});

                console.log("token :", token);

                gapi.client.drive.files.list().then(function (list) {
                    console.log(list)
                })

            });

        });
    });
});

控制台说:

gapi.client is loaded
gapi.client.drive is loaded
token : [TOKEN]

错误就是这样:

"code": 403,
"message": "The granted scopes do not give access to all of the requested spaces."

1 个答案:

答案 0 :(得分:0)

错误表示您正在尝试访问未经授权的空间。您的范围只允许您使用" appDataFolder"空间。因此,您必须更改

gapi.client.drive.files.list()

gapi.client.drive.files.list({spaces:"appDataFolder"})