繁体   English   中英

如何将Google API用作特定的用户服务器端? Node.js

[英]How do I use Google APIs as a specific user server-side? Node.js

我在网站上有一个表单,需要检查我的日历以查看可用的时间,然后在提交后稍后将发送电子邮件。

我在API控制台中创建了一个服务帐户,但不知道如何授予它对我帐户的访问权限。

到目前为止,这是我的工作,试图列出我的Gmail帐户标签作为测试。

var google = require( 'googleapis' );
var gmail = google.gmail('v1');

var key = require('../client_secret.json');

var authClient = new google.auth.JWT(
    key.client_email,
    null,
    key.private_key,
    ['https://mail.google.com/'],
    '****@gmail.com');

authClient.authorize(function (err, tokens) {
  if (err) {
    return console.log(err);
  }

  gmail.users.labels.list({
    auth: authClient,
    userId: '****@gmail.com'
  }, function (err, resp) {
    if (err) {
      return console.log(err);
    }

    console.log(resp);
  });
});

当我运行脚本时,我得到:

[Error: unauthorized_client]

编辑:

我还尝试了使用oauth进行的另一次身份验证流程,它将带您进入典型的权限屏幕,询问您是否允许“项目名称”访问“所放置的任何范围”。 然后,我可以使用访问令牌发出请求,并且一切都很好……但这感觉不对,因为我永远不希望任何其他用户进行授权。 我可以使用一条路径来授权“ app” 1次,然后禁用该页面,这样就无法再次访问它了……感觉有点骇人听闻。

我已经部分解决了我的问题; 至少,我已经把问题中的例子付诸实践了。

在开发人员控制台中,我必须编辑我的服务帐户并选中一个框以启用“域范围的委托”。

您转到“服务帐户”,单击服务帐户右侧的小三点菜单图标,单击“编辑”,然后在弹出对话框中需要选中一个复选框。

我之前曾看过有关“全域授权”的信息,但在该示例中,他们说要转到您的Google Apps帐户,但我没有这个帐户,因此我认为这与我无关,但是在修改了开发者的内容后控制台我发现上面的复选框和Gmail示例以及Gmail API的其他部分(包括从我的收件箱中读取邮件)都可以使用。

但是,我尝试向Calendar API发出请求,但出现错误,但我认为这需要另一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM