首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Directory获取资源日历

使用Directory获取资源日历
EN

Stack Overflow用户
提问于 2019-12-04 14:12:47
回答 1查看 312关注 0票数 1

我真的试过了,但我自己想不出如何用Directory检索资源日历的数据。

我想要的:

  • 使用具有域范围委托的服务帐户检索公司资源日历的数据。

我拥有的:

  • 具有域范围委托的服务帐户(+ credentials.json)
  • 公司资源日历的日历ID

我是一个非管理员用户,据我所知,服务帐户必须模拟一个用户。我是否需要成为管理员用户来管理和查看资源日历的数据并与服务帐户共享?我使用一个jwtClient来授权,我不知道我是否需要使用Directory、Google,或者两者都能让它工作。

我首先尝试使用Google,但它没有起作用,现在我想我必须使用Directory来获取资源日历。这就是我到目前为止所拥有的:

代码语言:javascript
复制
let express = require('express');
let app = express();

app.set('view engine', 'ejs');

let {google} = require('googleapis');
const calendar = google.calendar('v3');

const port = 3000;
const key = require('./credentials.json');
const jwtClient = new google.auth.JWT(
    key.client_email,
    null,
    key.private_key,
    [ 'https://www.googleapis.com/auth/calendar'],
    null
);

jwtClient.authorize(function(err, tokens) {
    if (err) {
        console.log(err);
    } else {
        console.log("Authorization worked!");
        console.log(tokens);
    }
});

app.get('/', function(req, res) {
    calendar.events.list({
        auth: jwtClient,
        calendarId: 'xxxx@resourcexxx.com',
        timeMin: (new Date()).toISOString(),
        maxResults: 5,
        singleEvents: true,
        orderBy: 'startTime'
    }, function(err, resp) {
        res.json(resp);
    });
});

app.use(express.static('public'));

app.listen(port, function(err){
    if (!err) {
        console.log("App is running on port", port);
    } else {
        console.log(JSON.stringify(err));
    }
});

任何帮助都将不胜感激。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 15:45:53

我是一个非管理员用户,据我所知,服务帐户必须模拟一个用户。我是否需要成为管理员用户来管理和查看资源日历的数据并与服务帐户共享?

  • 当用户启用了域范围的委托时,服务帐户可以模拟用户.这是不必要的。 服务帐户的行为类似于“正常”帐户--它们对资源有自己的权限。这意味着,如果您想从该帐户获取特定日历的数据,则必须授予它查看权限。如果您希望使用服务帐户编辑它,则必须授予帐户编辑权限。您可以像对任何其他用户一样这样做,区别是您必须使用服务帐户的电子邮件地址(在开发人员的控制台中可以找到)来引用它。 如果您使用的是启用了域范围身份验证的服务帐户,则在进行身份验证时,可以指定一个"subject“(域的现有用户)来模拟。在成功的身份验证之后,所执行的每个操作都将被执行,就像执行"subject“帐户一样--并且它将使用该用户的权限。

我使用一个jwtClient来授权,我不知道我是否需要使用Directory、Google,或者两者都能让它工作。

  • 因为您正在从日历(而不是任何用户的信息)中检索数据,所以只需要使用Google Calendar API

我想要的:通过使用具有域范围委托的服务帐户检索公司资源日历的数据。

  • 在您的情况下-检索数据-您可以简单地与您的服务帐户共享日历。之后,不需要使用域范围的委托,它将能够使用calendar.events.list检索日历中的事件及其细节,使用您提供的相同代码。

参考文献

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

https://stackoverflow.com/questions/59178024

复制
相关文章

相似问题

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