Archive for category Facebook

State of Play

So it’s been a fair few months since my last post and I thought I’d try get back into it with an update of what’s going on in the world of IM and Pidgin plugins and stuff.

In case you didn’t know the Christchurch earthquakes have been affecting my life for the past few months. These are pics from a walk around the block around my house. Over 7000 aftershocks and still going!

So what does this mean for the Pidgin plugins?
For the most part, not a great deal. Things have slowed down since I’m spending more time of earthquake cleanup and wedding planning rather than coding, but they’re still plodding along. Unfortunately the power-cuts and brown-outs have caused damage to the server machine that I use to build all my plugins (and which runs this website/blog) and it needs to be rebuilt. Currently it’s running of a live CD of Gentoo since the main partition won’t mount at boot. If you’ve been unable to access the Skype plugin site recently, that’s why.

So what’s the state of the Skype plugin?
As mentioned in previous posts, I had started work on a SkypeKit plugin. Unfortunately, the terms and conditions completely rule out using the SkypeKit SDK in open-source software and so the SkypeKit protocol would need to be clean-room reverse engineered – this has been made harder by the added layers of encryption recently added to the SkypeKit protocol. Instead, I’ve been following closely the skype-open-source efforts, to create a native Skype protocol plugin for Pidgin, however a lot of people have been having difficulty with it as certificates and other protocol things are out of date with the newest Skype versions. For now, I recommend just using an old version of Skype (eg, v3 or v4 on Windows) along with the skype4pidgin plugin, to keep memory usage down.

So what’s the state of the Facebook plugin?
Well at the moment, there’s a lot of people having a lot of trouble with the plugin. Things have changed in the ‘FB HTTP’ protocol and I haven’t had a chance to do anything about it. Unfortunately, Pidgin (well, libpurple mainly) can’t just switch over to using the official FB API’s for login and status messages and stuff since it all relies on having a browser being embedded into the app. It also relies on the browser supporting JavaScript, something which especially can’t be assumed when using Finch from a terminal. There’s some code in source control at the moment that uses the login system from the HTTP chat method to allow the Pidgin app to do the XMPP login and all that jazz without any kind of user interaction, but that probably breaks a lot of FB terms and conditions. 🙂

What about the other plugins?
Yeah, I write one or two other plugins for Pidgin/libpurple 😉 A lot of them are being integrated into the Purple Plugin Pack but I’ll list them out here with a brief status update:

  • OkCupid protocol plugin: Still going strong. I’ve been asked to port the plugin to work in InstantBird which I’ve started investigating.
  • Windows 7 Extensions plugin: Looking good. If you’re using Windows 7 or later and don’t have the plugin, you’re missing out on some useful eye-candy 🙂
  • Automatic translation plugin: Not so hot. The calls to the Bing/Microsoft Translate service are all coming back as null, and the Google Translate API’s are closing up at the end of the year. I’m looking at other (free) online services to use.
  • Steam protocol plugin: There’s now a SteamKit library out which talks the native Steam protocol. Unfortunately it’s written in .NET and would either need a complete rewrite to work in Pidgin, or for a Pidgin plugin to be written using embedded mono. Writing OO code in C is crazy
  • Keyboard LED notification: Not working on this any more since it works well for most people
  • Protocol Icon Override: Has an annoying bug that the icons don’t show up when creating a new account, otherwise fine
  • IRC HTML Formatting: Oddly needs to be re-enabled after Pidgin starts, and it’s currently not matching up HTML colour codes to their closest-match IRC colours. Bold and italics and underline work alright though 🙂
  • Wordfeud protocol plugin: Most of the protocol is reverse-engineered and chatting works fine, it just needs some kind soul to make a GTK interface for the Wordfeud game board
  • Gammu protocol plugin (SMS via your phone): Works fine
  • Typing sounds: Why would you even want to use it? 🙂
  • Omegle protocol plugin: No idea. Let me know if you use this one
  • Ning protocol: Also no idea. Again, let me know if you use it
  • NetNexus protocol: Unfortunately noone hangs out in the NetNexus rooms any more
  • Pidgin Juice: Needs a massive overhaul to take advantage of some new HTML5 goodness.

So yup, that’s an update. While I’m not in the super active development mode I was a year or two ago, I’m still fairly contactable. So if you have any questions, queries, bug reports or feature requests feel free to either contact me, or leave a post in the comments. 🙂


New Face Opt-In security feature breaks plugin

Facebook have recently announced a new security feature to Facebook to “help you keep your account and information secure.” Unfortunately it can cause the Facebook plugin to stop working. So what’s happening about it?

At the moment, I’m rewriting the plugin to use the new XMPP protocol that Facebook have provided. (You can already start using it yourself if you like but you’ll miss out on features such as larger buddy icons, status messages, notifications, group/friend list management). I’ve been trying to work on it for a while, but due to my fiancée being in hospital for many weeks there’s been a bit of a personal delay 🙂

The other thing you, the user can do, is to tweak the hidden settings of the plugin to work around the new security feature. If you close down Pidgin, edit your .purple/accounts.xml file, find your browser’s user-agent, and paste it into your accounts.xml in the line
<setting name=’user-agent’ type=’string’>YourUserAgentHere</setting>
then Facebook will think that your browser is the one you normally use and should let you pass.
The other alternative of course is to disable (or not opt-in to) this new opt-in feature, but that one’s up to you.


XMPP Facebook Chat

I get a lot of complaints from people who say that the Facebook Chat plugin for Pidgin is “flakey” and disconnects a lot. I’d just like to say, “Its not my fault!” 🙂
I was talking on the phone to someone at Facebook and asked them if they used my plugin. They said “no, I don’t use the public one its really buggy but I am beta testing our new interface internally which is a lot better.” Once he found out that I actually wrote the plugin, he did a bit of a turnaround and went on to explain that the server software isn’t really the greatest, that it puts a heavy load on their servers and that it was actually all their fault that my plugin was so bad 🙂

So, after a bit of snooping around, I discovered the details of the XMPP servers. You can even (almost) connect to them. For now, it looks like you have to be authorized in their beta programme (or probably just be working at Facebook) to be able to use it.

The XMPP server is running at and it uses DIGEST-MD5 for authentication as well as something called “X-FACEBOOK-PLATFORM” for SASL. In Pidgin you can set up the account by using your username, with the domain, disabling the “Require SSL/TLS” option in the advanced tab. Doesn’t look like its working with s2s yet, but hard to tell without being able to log in.

So give it a go, maybe your account slips through the cracks and you can log in. Will been keen to hear from anyone about their successes/failures with this.


Facebook Usernames

Facebook have recently posted on their blog that it is now possible to log into Facebook using your Facebook username.

I’ve just had a check and it’s possible to do the same with the Pidgin/Adium Facebook plugin. Not much of an issue if you’ve already got your account set up in Pidgin/Adium already, but hey, might save you a few keypresses next time you do set up an account 🙂

No Comments

pidgin-facebookchat v1.51 important changes

By the time you read this, I’ll have come out with a new version of the pidgin-facebookchat plugin. There are some significant changes that downstream packagers will want to pay attention to.

The main one you’ll bump into, is that the plugin now uses the json-glib library. It’s included in svn if you don’t want to compile it yourself, but it’ll be good to make a package for your distro to include it, since not all distro’s have it. From now, we’ll be moving over the string-parsing code to use the new json-glib stuff. The buddy list has been the first thing ported over, and by the next version we’ll have moved all the code over to using it.

The other important change is that the plugin can use zlib for requesting compressed data from the Facebook servers. gzip content encoding is nothing new, but it was a P.I.T.A. to code up in C. To enable it, you’ll need to use the -DHAVE_ZLIB compiler flag. I’ve found that the data savings are around 75%, so you’ll make your fellow distro-users happy by enabling it.

No Comments

Voice chat in Facebook Chat???

So was looking through the debug logs for Facebook chat and stumbled upon this:


in all the users properties. Does VC stand for voice chat? Lets wait and see 🙂

Edit: It gets even better. There’s lots of “POPOUT_TYPE_VIDEOCHAT” and “if (this.inVideoChat)” messages in the source code in the Facebook Javascript.

1 Comment

Pidgin-FacebookChat v1.50

So I’ve just put out an update for Pidgin-FacebookChat, the Facebook chat plugin for Pidgin and thought I should do a bit more of a writeup than what’s in the changelog.

One of the more important features is that there should be a much lower bandwidth usage for some people.  Unfortunately, the plugin was getting into a rapid loop in the fetch-message routine which would cause the page to be downloaded lots and lots (and lots) of times in quick succession.  I’m not 100% sure of the reason behind this, but it seemed to be worse the closer you are to the Facebook servers.

To try and work around this, I’ve added in a 1 second delay to the re-request of messages, as well as instead of grabbing the data that was needed from the /home.php page, grabbing it from the smaller “pop-out chat” window.  So there’s now less stuff to download, and download less frequently.  I hope that fixes it 🙁  I’m genuinely sorry to those people who ended up having to pay for extra bandwidth charges 🙁

On a more positive note, there’s another minor feature in the plugin that wasn’t in the changelog: the plugin now sends the “Accept-Language” HTTP header.  Thats the techy way of saying that you should now be receiving error messages from the Facebook servers in the same language that you look at Pidgin in.   While most of the pidgin-facebookchat plugin hasn’t been translated (unlike the Skype plugin), the error messages from the Facebook servers would appear to be in your language.  From the looks of it, Facebook were doing an IP address detection to work out what country you were in, and giving error messages in the language of that country.  Great 99% of the time, but really hard to use when you’re, say, on a trip overseas in a country that you can’t read the language of.

The other feature in this version of the plugin is to be able to force yourself to be in the ‘idle’ state on Facebook chat.  Previously, you had to configure your Pidgin to report your idle status after 5 minutes but now there’s an “idle” status type in the selection.  This should help with people who set their status to something other than “online” in Pidgin, no more messages from people who think you’re ignoring them.  To be honest, I didn’t actually get much of a chance to test this feature, so let me know you’re success stories with it.

So go download the plugin, and let me know what you think 🙂

No Comments