如何获取没有访问令牌的Google联系人?

时间:2015-04-29 09:20:04

标签: node.js passport.js google-contacts

已更新

我仍然在access token的帮助下得到了答案:)

并提及它。

我正在使用Google contacts API来获取user个联系人。

我使用passport.js登录Google并在passport's access token的帮助下呼叫API

https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token

获取所有contacts

但我需要使用其他内容而非access token secret key  或client key

因为如果用户添加了log in,每次我需要Google contacts newly contact来同步Google

我做了 var getGoogleContacts = function(token, userId) { var url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token; request(url, function(error, response, body) { if (error) { console.log(error); } else { var contacts = JSON.parse(body); saveGoogleContacts(userId, contacts); } }); }; /*Get contacts and store in user_contact table*/ var saveGoogleContacts = function(userId, contacts) { var gContacts = []; contacts.feed.entry.forEach(function(contact, index) { if (contacts.feed.entry[index].gd$email) { gContacts.push([ null, null, contacts.feed.entry[index].title.$t, "'" + contacts.feed.entry[index].gd$email[0].address + "'", 1, userId, 0 ]); } }); if (gContacts.length > 0) { user.insertContacts(gContacts, function(err, result) { if (err) { console.log(err); } else { console.log('contacts saved: ' + result); } }); }else{ console.log('No records available'); } }; 但没有得到任何解决方案。

任何想法对我都有帮助。

以下是我获取联系人的代码

        var mergedMesures = mesures
            .GroupBy(_ => _.Commentaires)
            .Select(_ => new HistoMesures
            {
                Debut = _.Min(item => item.Debut),
                Fin = _.Max(item => item.Fin),
                Commentaires = _.Key
            });

1 个答案:

答案 0 :(得分:0)

我在这里得到了答案。

正如我所提到的,我使用passport.js使用Google

登录

在登录过程中,passport提供access tokenrefresh token默认refresh token将为null

如果您想获得refresh token,则需要在身份验证过程中传递parameter accessType:offline,就像这样

app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email','https://www.google.com/m8/feeds'],accessType: 'offline', approvalPrompt: 'force' }));

之后,您将获得refresh token并将其存储在任何永久性位置,因为它不会expire,并且只要您想获得access token

就可以使用

access token我正在使用refresh-token模块。

格式化token后,只需拨打API即可获取联系人。

喜欢这个

var url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token;
        request(url, function(error, response, body) {
            if (error) {
                cb(error);
            } else {
                var contacts = JSON.parse(body);
                cb(null, contacts);
            }
        });
    }

就是这样。