}).then(function(data) { if (!data.access_token) { callback(true); } var access_token = data.access_token, user_id = data.user_id; vk.setToken(access_token); vk.callMethod('users.get', { fields: 'photo_max' }).then(function(usersArray) { var userInfo = usersArray[0]; if (!userInfo) { callback(true); } userInfo.id = user_id; insertOnDuplicateUpdateUser(userInfo, { access_token: access_token }, function(err, user) { if (err) { callback(true); } getAndSaveFriends(user, function(err, user) { if (err) { callback(true); } debug.log('[Friends saved]', user); generateAndSaveInternalToken(user, function(err, newToken) { if (err) { callback(true); } callback(false, newToken); }); }); }); }).catch(onError); }).catch(onError);
function getAndSaveFriends(user, callback) { vk.callMethod('friends.get', { order: 'hints', v: '5.34' }).then(function(res) { var friends = res.items; for (var el in friends) { friends[el] = 'vk_' + friends[el]; } user.friends = friends; user.save(function(err) { if (!err) { debug.log('Friends has been received!'); callback(false, user); } else { debug.log('An error occurred in save user friends', err); } }); }).catch(function(err) { callback(true); }); }