如何使用api密钥访问Google云端硬盘

时间:2018-02-06 07:24:08

标签: javascript node.js google-api google-drive-api api-key

我正在尝试使用apiGoogle Node.js客户端库访问Google Drive API,以便将一些文件上传到我的云端硬盘帐户。

到目前为止我的代码:

var drive = google.drive({ version: 'v3' });
drive.apiKey = "API_KEY"
drive.setScope = "https://www.googleapis.com/auth/drive.file"

drive.files.create({
    resource: {
        name: 'text.text',
        mimeType: 'text/plain',
        parents:['1ATscm2nsE9KpjA66iXHB9jnMrbyik7PP']
    },
    media: {
        mimeType: 'text/plain',

        body: fs.createReadStream('files/text.text')

    }
});

错误:

 errors: 
   [ { domain: 'global',
       reason: 'required',
       message: 'Login Required',
       locationType: 'header',
       location: 'Authorization' } ] }

有人可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您似乎错过了授权。首先,您需要在开发人员控制台中打开Drive API。然后,您可以使用以下代码替换为您的凭据。

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.define('User', {
            extend: 'Ext.data.Store',
            autoLoad: true,
            alias: 'store.user',
            fields: ["id", "name", "orders"],
            proxy: {
                type: 'ajax',
                url: 'users.json',
                reader: {
                    type: 'json',
                    rootProperty: 'users'
                }
            }
        });
        Ext.define('Order', {
            extend: 'Ext.data.Store',
            alias: 'store.order',
            field: ["id", "price", "quantity", "product"],
            storeId: 'order'
        });
        Ext.create('Ext.form.Panel', {
            title: 'Example Combo',
            bodyPadding: 5,

            defaults: {
                width: 250
            },

            // The fields
            defaultType: 'combo',
            items: [{
                name: 'L1_combo_box',
                displayField: 'id',
                valueField: 'id',
                queryMode: 'local',
                emptyText: 'Select user',
                store: {
                    type: 'user'
                },
                listeners: {
                    select: function (combo, rec) {
                        var L2_combo_box = combo.up('form').getForm().findField('L2_combo_box'),
                            order = rec.get('orders') || [],
                            data = [];
                        //reset combo value
                        L2_combo_box.reset();
                        //If order have multipe data then need use forEach for all data
                        order.forEach(item => {
                            data = data.concat(item.order_items);
                        });
                        //load data in combo store
                        Ext.getStore('order').loadData(data);
                    }
                }
            }, {
                emptyText: 'Select order items',
                name: 'L2_combo_box',
                displayField: 'id',
                valueField: 'id',
                queryMode: 'local',
                store: {
                    type: 'order'
                }
            }],
            renderTo: Ext.getBody()
        });
    }
});

如果您对此有更多疑问,可以在github上查看此部分。

或者,如果您还没有查看他们的文档here

答案 1 :(得分:0)

您可以参考此thread。确保您为访问令牌发送access_token={your oauth2 access token}而非key={your key}。您可以查看此documentation以获取更多信息。