Setting up a Facebook account in BitlBee
Facebook's offering a XMPP server for some time already, which means you can use their chat using any XMPP/Jabber client, including BitlBee.
Contents
Connecting
You can then connect either using OAuth, or the old way (with a password):
Using OAuth
This method is available starting from BitlBee 3.0.5. The main page of bitlbee.org states that it's broken, but it has been fixed since then.
1 12:12:54 <wilmer> account add jabber wilmer@chat.facebook.com
2 12:12:54 <root> Account successfully added with tag fb
3 12:12:54 <root> You can now use the /OPER command to enter the password
4 12:12:54 <root> Alternatively, enable OAuth if the account supports it: account fb set oauth on
5 12:13:03 <wilmer> acc fb set oauth on
6 12:13:03 <root> oauth = `on'
7 12:13:06 <wilmer> acc fb on
8 12:13:06 <root> fb - Logging in: Starting OAuth authentication
Now, like with twitter, you can authenticate with Facebook using your web browser and allow BitlBee to use your account, without giving your password to BitlBee. Check for a received private message with a URL to facebook. Once you complete this, login will continue:
1 12:19:23 <root> fb - Logging in: Requesting OAuth access token
2 12:19:25 <root> fb - Logging in: Connecting
3 12:19:25 <root> fb - Logging in: Connected to server, logging in
4 12:19:25 <root> fb - Logging in: Converting stream to TLS
5 12:19:26 <root> fb - Logging in: Connected to server, logging in
6 12:19:26 <root> fb - Logging in: Authentication finished
7 12:19:27 <root> fb - Logging in: Server claims your JID is `-1278655042@chat.facebook.com' instead of `wilmer@chat.facebook.com'. This mismatch may cause problems with groupchats and possibly other things.
8 12:19:27 <root> fb - Logging in: Authenticated, requesting buddy list
9 12:19:28 <root> fb - Logging in: Logged in
As you can see, during login the server will tell you your real (numeric) XMPP username. It might be a good idea to update your account settings with this information using:
acc fb off acc fb set username -1278655042@chat.facebook.com acc fb on
OAuth is likely to work better on public servers than the old authentication method described below. Also, for this method you shouldn't have to create a Facebook username. But most important of all, OAuth will give the BitlBee server permission to use your Facebook account just for chat. Even if your account information leaks, it won't provide access to any other part of your Facebook account.
The old way (with a password)
First, you do need to have a Facebook username.
Important: You will have to use all lowercase letters for your Facebook username in Bitlbee, but not on Facebook itself. E.g. your username on Facebook can be "Someone", but in Bitlbee, you'll have to use "someone".
1 23:44:32 <wilmer> account add jabber yourusername@chat.facebook.com ''yourpassword''
2 23:44:32 <root> Account successfully added
3 23:44:42 <wilmer> account facebook set nick_format %full_name
4 23:44:42 <root> nick_format = `%full_name'
5 23:44:43 <wilmer> account on
6 23:44:44 <root> jabber(wvdgaast@chat.facebook.com) - Logging in: Connecting
7 23:44:44 <root> jabber(wvdgaast@chat.facebook.com) - Logging in: Connected to server, logging in
8 23:44:45 <root> jabber(wvdgaast@chat.facebook.com) - Logging in: Authentication finished
9 23:44:45 <root> jabber(wvdgaast@chat.facebook.com) - Logging in: Server changed session resource string to `BitlBee_5d9293ae_4870E52387B28'
10 23:44:46 <root> jabber(wvdgaast@chat.facebook.com) - Logging in: Authenticated, requesting buddy list
11 23:44:47 <root> jabber(wvdgaast@chat.facebook.com) - Logging in: Logged in
If you're getting authentication failures, try logging out and back into the Facebook website. If the problem persists, try connecting using OAuth for at least one time (see topic above), as this seems to fix the problem in some cases.
This will probably appear as an "application" called "Rtgw_xmpp_username_password_login" in your facebook account settings, which probably means "Realtime gateway xmpp username/password login"
Numeric usernames
All contacts have numeric handles, which makes for very ugly usernames by default, since nicknames are generated from the IM handle. By setting the nick_format account setting to %full_name, like this:
account fb set nick_format %full_name
You need to reconnect to see the changes:
account fb off account fb on
Enter: help nick_format or help set nick_format for more detailed information on what this setting does and what its parameters are.
By default nicks will be entirely lowercased. It can be easier to distinguish names if you use the capitalisation Facebook applies to names. This is not true CamelCase, but close. To turn lowercasing of nicks off enter:
set lcnicks off
Alternatively, there are scripts that automatically rename numeric handles for some IRC clients.
Irssi users can use this script to rename the contacts. Note that this script can translate some non-ASCII characters to something more IRC-friendly, whereas the BitlBee setting will just strip everything non-ASCII.
Weechat users can use the facebook-rename script to automatically rename any user who joins with a numerical name. Note that your Bitlbee server handle must be named 'bitlbee', or you'll have to change the "bitlbeeServer" parameter value on the top of the script to your handle name.
This script, like the BitlBee setting, will simply strip everything non-ASCII.
I get nothing after "Logging in: Authenticated, requesting buddy list"
This is a problem with Facebook, not with BitlBee. It's especially likely that you get this error on public servers. The problem's caused by security measures on Facebook's side. They keep track of the IP addresses from where you've used their website in the past, and often restrict access to your account via their XMPP server to just those IP addresses. Most new users had used facebook chat previously only from their home/office etc and facebook probably keeps a log of all IPs that were used to access that account. And, when you access your account from a public server (which is located in a different country/continent for most of users), facebook refuses to let you in. (Gmail/gtalk do similar tracking except that instead of refusing user to login, they flag a warning and prompt user to change password in case the access sounds malicious). If you get this error, you can try to log into Facebook (via an SSH tunnel, for example) from the IP address that also hosts the BitlBee instance.
But if you use a public BitlBee server, unfortunately there's not much you can do. BitlBee can't offer any help with this since that could be seen as a violation of their terms of service. Fortunately not all accounts are affected by this, several people have reported that they can log into Facebook XMPP from wherever they want. Possibly accounts get unlocked once they're used from many places (i.e. different IPs) already. You can try logging in to facebook web chat from different IPs (maybe office, home, university) a few times before it lets you login from a public bilbee server.
Note: It seems that this should no longer happen, and most likely Facebook XMPP will now allow connections from any IP address, after verifying the connection attempt on their website.
Note2: If this does still happen to you, try using OAuth as described above.
I can't set myself as away.
Yes. That has nothing to do with BitlBee though, it's a well-known limitation of the very poor XMPP service offered by Facebook.
Lost messages
You may have trouble either sending or receiving messages, which otherwise show up in the web interface. We assume this also is Facebook's fault (see above) though if you can prove otherwise, feel free to reopen this bug report to submit a patch.