我有Node.js功能,它使用" node-linkedin"来导入LinkedIn Feed。模块。 API有时会针对给定的LinkedIn帐户成功运行,但会随机为同一帐户抛出401错误。
importLinkedInFeeds = function(user, linkedin, start, callback) {//linkedin refers to linkedInToken
this.getUserFeedsByDate(linkedin, start, function(err, data) {
if (!err && data) {
if (data._count > 0 || data._total > 0) {
userManagementObj.updateLinkedinLastSync(user._id, function(error, isSuccess, message) {});
var feedDirect = [];
var feedOther = [];
var allUserLinkedinIds = [];
var referenceIds = [];
for (var i = 0; i < data.values.length > 0; i++) {
var obj = validateAndParseLinkedinFeed(user, linkedin.id, data.values[i]);
if (obj.isValid) {
feedDirect = feedDirect.concat(obj.feedDirect);
feedOther = feedOther.concat(obj.feedOther);
allUserLinkedinIds = allUserLinkedinIds.concat(obj.userLinkedinIds);
referenceIds = referenceIds.concat(obj.referenceIds);
}
}
if (referenceIds.length > 0) {
referenceIds = common.removeDuplicate_id(referenceIds, true);
}
if (allUserLinkedinIds.length > 0) {
allUserLinkedinIds = common.removeDuplicate_id(allUserLinkedinIds, true);
var query = {
"linkedin.id": {
$in: allUserLinkedinIds
}
};
var projection = {
emailId: 1,
firstName: 1,
lastName: 1,
publicProfileUrl: 1,
profilePicUrl: 1,
companyName: 1,
designation: 1,
mobileNumber: 1,
skypeId: 1,
location: 1,
linkedin: 1
};
userManagementObj.selectUserProfilesCustomQuery(query, projection, function(error, users) {
if (error) {
logger.info('Error Linkedin importLinkedInFeedToInteractions():LinkedIn selectUserProfilesCustomQuery() ', error);
callback(false);
} else if (users && users.length > 0) {
for (var u = 0; u < users.length; u++) {
for (var int = 0; int < feedOther.length; int++) {
if (feedOther[int].linkedinId == users[u].linkedin.id) {
feedOther[int].userId = users[u]._id;
feedOther[int].firstName = users[u].firstName;
feedOther[int].lastName = users[u].lastName;
feedOther[int].publicProfileUrl = users[u].publicProfileUrl;
feedOther[int].profilePicUrl = users[u].profilePicUrl;
feedOther[int].companyName = users[u].companyName;
feedOther[int].designation = users[u].designation;
feedOther[int].location = users[u].location;
feedOther[int].mobileNumber = users[u].mobileNumber;
feedOther[int].emailId = users[u].emailId;
}
}
}
addInteractionsBatch(user, feedDirect, feedOther, referenceIds, callback)
} else addInteractionsBatch(user, feedDirect, feedOther, referenceIds, callback)
})
} else {
addInteractionsBatch(user, feedDirect, feedOther, referenceIds, callback)
}
} else {
logger.info('No linkedin feeds', user.emailId);
callback(true)
}
} else {
callback(false)
}
})
}
}