Node.js LinkedIn API:随机401错误

我有Node.jsfunction,它使用“node-linkedin”模块导入LinkedIn feeds。 这个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) } }) } 

}