首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Node.js -无法从Google Drive API访问我的帐户

Node.js -无法从Google Drive API访问我的帐户
EN

Stack Overflow用户
提问于 2019-12-25 01:42:00
回答 2查看 488关注 0票数 0

我需要以编程方式修改我的Google Drive,就创建文件夹和上传一堆文件的能力而言,然后,当需要时-删除根文件夹并重新执行整个过程。

我已经创建了一个具有服务帐户的项目,然后下载了JSON并将其存储在我的计算机上。

接下来,我关注了this tutorial

我最终得到了这段代码:

代码语言:javascript
代码运行次数:0
运行
复制
const auth = await google.auth.getClient({
  credentials: require(pathToServiceAccountJSON),
  scopes: "https://www.googleapis.com/auth/drive"
});

const drive = await google.drive({ version: "v3", auth });

drive.files
  .create({
    resource: {
      name: filename,
      mimeType: "application/vnd.google-apps.folder",
      parents: [parentId]
    }
  })
  .then(result => console.log("SUCCESS:", result))
  .catch(console.error);

但是,执行它会导致抛出以下错误:

代码语言:javascript
代码运行次数:0
运行
复制
{
  ...
  errors: [{
    domain: "global",
    reason: "forbidden",
    message: "Forbidden"
  }]
}
EN

回答 2

Stack Overflow用户

发布于 2019-12-25 12:45:29

首先,如果你迷路了,这个quick start from Google可能比教程更好。

其次,要访问你的驱动器,你必须在你的应用程序中请求适当的作用域,并且你必须通过访问授权过程中提供的URL来授权应用程序所请求的权限(作用域)。Here is a guide to scopes

票数 0
EN

Stack Overflow用户

发布于 2019-12-25 18:32:46

为了能够使用服务帐户模拟用户(如您自己或域中的任何其他用户),您需要启用全域委托,为此,您需要有一个G套件帐户1。如果是这种情况,在库示例2中,您需要在构造JWT对象时将您想要模拟的用户添加为第5个参数:

代码语言:javascript
代码运行次数:0
运行
复制
const {JWT} = require('google-auth-library');
const keys = require('./jwt.keys.json');

async function main() {
  const client = new JWT(
    keys.client_email,
    null,
    keys.private_key,
    ['https://www.googleapis.com/auth/cloud-platform'],
    'userToImpersonate@example.com'
  );
  const url = `https://dns.googleapis.com/dns/v1/projects/${keys.project_id}`;
  const res = await client.request({url});
  console.log(res.data);
}

如果您没有G套件帐户,您可以简单地按照快速入门3个步骤获取驱动器服务,然后使用它进行创建请求。

1

2

3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59471961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档