【问题标题】:Authenticating googleapi node library with passport使用护照验证 googleapi 节点库
【发布时间】:2017-09-30 09:18:47
【问题描述】:

我正在使用 Google oauth 的护照,我也想用它来进行 API 调用。所有 googleapi 文档都围绕使用 google 自己的身份验证库展开。

尤其是 auth 对象中包含的内容,如快速入门末尾的 calednar.events.list 调用中所示,以及如何将其从护照中取出?

https://developers.google.com/google-apps/calendar/quickstart/nodejs

【问题讨论】:

    标签: javascript node.js oauth google-api-nodejs-client


    【解决方案1】:

    auth 在此上下文中是 OAuth2 对象。您可以看到它在来自the googleapis source code 的每个请求中是如何处理的。例如,您可以在上下文范围内设置如下:

    google.calendar({
        version: 'v3',
        auth: oauth2Client
    })
    

    或在每个请求中,如入门示例代码中。


    当您想将其用于护照时,我猜您将拥有类似以下内容,假设 /auth/google 是身份验证端点:

    function userLogged(req, res, next) {
        if (req.isAuthenticated())
            return next();
        res.redirect('/auth/google');
    }
    
    app.get('/calendarList', userLogged, function(req, res) {
    
        // req.user is the login user
    
        var oauth2Client = new OAuth2(
            config.clientID,
            config.clientSecret,
            config.callbackURL
        );
    
        oauth2Client.credentials = {
            access_token: req.user.access_token,
            refresh_token: req.user.refresh_token
        };
    
        var calendar = google.calendar('v3');
        calendar.events.list({
            auth: oauth2Client,
            calendarId: 'primary',
            timeMin: (new Date()).toISOString(),
            maxResults: 10,
            singleEvents: true,
            orderBy: 'startTime'
        }, function(err, response) {
            // process result
        });
    });
    

    【讨论】:

      【解决方案2】:

      您只需添加 desired scopes 即可访问 Google 日历 API。

      -吉姆

      【讨论】:

        猜你喜欢
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 2013-09-24
        • 2016-12-26
        • 2018-10-14
        • 2020-01-30
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多