是否可以从服务器端登录google API并将结果传递给用户?

问题描述 投票:0回答:1

我有一个应用程序,客户可以选择时间来预约视频约会,我只想向他们发送Google Hangouts Meet链接。为此,我在此文档https://developers.google.com/calendar/create-events的JavaScript代码中使用了Google日历API,它可以正常工作,并且我可以很好地创建链接。但是我的问题是,有什么办法可以根据他们在服务器端(节点js)上使用Gsuite帐户选择的时间创建链接,然后在最后将链接发送给他们? (我不想在他们的Google日历上创建活动或从Google发送通知给我)我不希望用户在Google登录页面上提示进行授权。我只需要创建链接并将其发送给客户端,这可能吗?我感谢任何建议。

javascript node.js google-calendar-api google-oauth2 google-hangouts
1个回答
0
投票

使用此guide中的代码为服务帐户添加密码,并从google-auth nodejs存储库中搜索此examples,以了解如何设置用于模拟用户的subject参数,我能够获取经过身份验证的JWT auth客户端对象,该对象可用于发出Google API请求,例如模拟用户的listing the events

let google = require('googleapis').google;
let privatekey = require("./[JSON-FILENAME].json");

// configure a JWT auth client
let jwtClient = new google.auth.JWT(
    privatekey.client_email,
    null,
    privatekey.private_key,
    ['https://www.googleapis.com/auth/calendar'],
    '[EMAIL-OF-USER-TO-IMPERSONATE]'
);
//authenticate request
jwtClient.authorize(function (err, tokens) {
    if (err) {
        console.log(err);
        return;
    } else {
        console.log("Successfully connected!");
    }
});

listEvents(jwtClient);

function listEvents(auth) {
    const calendar = google.calendar({ version: 'v3', auth });
    calendar.events.list({
        calendarId: 'primary',
        timeMin: (new Date()).toISOString(),
        maxResults: 10,
        singleEvents: true,
        orderBy: 'startTime',
    }, (err, res) => {
        if (err) return console.log('The API returned an error: ' + err);
        const events = res.data.items;
        if (events.length) {
            console.log('Upcoming 10 events:');
            events.map((event, i) => {
                const start = event.start.dateTime || event.start.date;
                console.log(`${start} - ${event.summary}`);
            });
        } else {
            console.log('No upcoming events found.');
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.