How to set up Facebook with bitlbee-facebook

As an alternative to the now (mostly-)defunct XMPP service provided by facebook, jgeboski (who also wrote bitlbee-steam) made a new plugin based on the facebook messenger mobile client (which uses a protocol called MQTT)

It also happens to work much better than the XMPP service ever did, and supports groupchats.

Building and Installing

APT repo

An APT repo for several recent debian/ubuntu versions is maintained here:

https://jgeboski.github.io/#debian-and-ubuntu

Note that this must be used together with the other APT repo, http://code.bitlbee.org/debian/

Not installing anything

The public server at im.codemonkey.be has bitlbee-facebook installed.

(That server is administered by Tom Laermans aka sid3windr, who also admins testing.bitlbee.org, see the public server list)

The manual way

Make sure bitlbee and its headers have been installed. If bitlbee came from the distribution's repository, it will most likely need the development package, usually bitlbee-dev or bitlbee-devel.

If bitlbee was built by hand (or alike via a script), ensure the make target install-dev is invoked. This target is not called by default, and will install the headers that are needed.

$ git clone https://github.com/bitlbee/bitlbee-facebook.git
$ cd bitlbee-facebook

With a "global" (or system) bitlbee installation:

$ ./autogen.sh
$ make
$ make install

Otherwise, before running those commands, set PKG_CONFIG_PATH to the path to the bitlbee.pc file. For example:

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

Usage

Please note that if you have enabled two factor authentication on your Facebook account (and you should) you have to supply an access token to bitlbee.

There is currently no built-in way to do this from within bitlbee-facebook, but a Python script, written by github user jaymzh and posted in a thread for the sister project purple-facebook, can be used to obtain a token. See the thread for more instructions.

Getting started

Use the same email you use to log in to facebook, and your main password.

> account add facebook <email> <password>
> account facebook set token <token from Python script above> (if 2FA is activated)
> account facebook on

Joining existing groupchats

> fbchats facebook
> fbjoin facebook <index> <channel>
> /topic <message>
> /invite <user>

Note that fbjoin is only needed the first time you join a channel. After that, you can just do /join <channel>.

You can configure these channels to be autojoined by doing channel <channel> set auto_join true

Joining old groupchats

The fbchats lists only the most recent group conversations. If you need to join an existing conversation that does not appear in fbchats, retrieve its ID by opening it on Facebook, copy the large numeric ID following conversation- in the URL and manually add it:

> chat add facebook 123456789 #some-channel
> /join #some-channel

Creating new groupchats

To create a new groupchat, use the fbcreate command, followed by a space separated list of users (at least two), and then "fbjoin" the groupchat to give it a name.

> fbcreate [acc] <user user ...>
> fbjoin [acc] 1 <channel>
> /topic <message>
> /invite <user>

Settings

mark_read

account facebook set mark_read (true/false/available)

If set to true, all messages will be marked as read as soon as they are received. If set to available this will only happen when you're not marked as away in bitlbee.

This can be useful to avoid getting message notifications in the website (if bitlbee is your main way to read facebook messages) but your contacts might complain that you've read their messages and didn't reply.

mark_read_reply

account facebook set mark_read_reply (true/false)

If set to true, messages will be marked as read as soon you reply to them.

show_unread

account facebook set show_unread (true/false)

If set to true, unread messages will be shown when connecting.

Enabling this without mark_read may result in getting the same messages repeatedly if the account reconnects frequently.

Otherwise, if mark_read is on, it can be a way to retrieve offline messages.

group_chat_open

account facebook set group_chat_open (true/false/all)

This setting controls when to join a channel if a message is sent to the corresponding groupchat. It has three possible values:

Issues

Any issues with this plugin should be reported to https://github.com/bitlbee/bitlbee-facebook/issues

Debugging

To enable debugging output:

$ export BITLBEE_DEBUG=1      # or use BITLBEE_DEBUG_FACEBOOK=1 to debug only this plugin
$ bitlbee -Dnv

Ensure that you're running bitlbee as the correct user (with the right permissions to the user configuration directory, usually /var/lib/bitlbee)

Login Problems

Some address ranges (mostly belonging to affordable vps providers) seem to be blacklisted by facebook and every login attempt leads to authentication failing with:

@root | facebook - Login error: User must verify their account on www.facebook.com (405)

In the process all devices logged into the account are logged out and a password change is required. There seems to be no way of telling facebook to trust an ip adress from the website, even if you click 'That login attempt was me' the next time it will be blocked again. So far the only solution is to connect to facebook with your logged in and trusted browser via the ip where your bitlbee server is running, for example by using an ssh socks proxy:

ssh -D localhost:1234 <your.bitlbee.server.tld>

in the network settings of your OS (or in Firefox: Preferences->Advanced->Network->Connection) select Socks5 proxy with host localhost and port 1234. If your server has IPv6 and your local Internet does not, be sure to activate "Remote DNS". Then open up facebook in your browser. You can check if you are connecting from the right IP in Facebook settings. After that you should be able to safely reactivate your account.

For further Information see the corresponding Github issues: #105, #108

BitlBee Wiki: HowtoFacebookMQTT (last edited 2022-01-09 18:08:25 by h-2001-9b1-25ff-d800-7afa-61a3-d0c0-4d5b)