ws3-fca
Version:
A node.js package for automating Facebook Messenger bot, and is one of the most advanced next-generation Facebook Chat API (FCA) by @NethWs3Dev & @ExocoreCommunity
72 lines (64 loc) • 2.24 kB
JavaScript
;
const utils = require("../utils");
const setOptionsModel = require('./models/setOptions');
const buildAPIModel = require('./models/buildAPI');
const loginHelperModel = require('./models/loginHelper');
let globalOptions = {};
let ctx = null;
let defaultFuncs = null;
let api = null;
const fbLink = (ext) => ("https://www.facebook.com" + (ext ? '/' + ext : ''));
const ERROR_RETRIEVING = "Error retrieving userID. This can be caused by many factors, including being blocked by Facebook for logging in from an unknown location. Try logging in with a browser to verify.";
/**
* Initiates the login process for a Facebook account.
*
* @param {object} credentials The user's login credentials (e.g., email/password or appState cookies).
* @param {object} [options={}] Optional login configurations.
* @param {function} callback The callback function to be invoked upon login completion.
* @returns {Promise<void>}
*/
async function login(credentials, options, callback) {
if (typeof options === "function") {
callback = options;
options = {};
}
if ('logging' in options) {
utils.logOptions(options.logging);
}
const defaultOptions = {
selfListen: false,
listenEvents: true,
listenTyping: false,
updatePresence: false,
forceLogin: false,
autoMarkDelivery: false,
autoMarkRead: true,
autoReconnect: true,
online: true,
emitReady: false,
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
};
Object.assign(globalOptions, defaultOptions, options);
await setOptionsModel(globalOptions, options);
loginHelperModel(
credentials,
globalOptions,
(loginError, loginApi) => {
if (loginError) {
return callback(loginError);
}
api = loginApi;
ctx = loginApi.ctx;
defaultFuncs = loginApi.defaultFuncs;
return callback(null, loginApi);
},
setOptionsModel,
buildAPIModel,
api,
fbLink,
ERROR_RETRIEVING
);
}
module.exports = {
login
};