Tag Archives: Facebook

Rare Facebook issue fixed

We had a strange issue where in very rare cases, posts were sent to the wrong Facebook page. Instead of being posted to your own profile, they would be posted to the timeline of another Composer user. Still posted as you, but to the wrong place. This issue has now been fixed. There seems to be some kind of bug in the PHP Facebook SDK.

Composer posts images

In our biggest release since launch, we’ve just deployed the ability to publish images.

Today, images are posted to Facebook, Twitter and WordPress. If you send an image post to other services, we’ll send just the text, without the image. We’re working on sending a link to the image to other services.

We send the image as a normal image post to both Facebook and Twitter. For WordPress, we get a bit creative. First, we upload the full original file to your WordPress site. Then, we get the image details back from WordPress, and insert the medium sized image into the post. This way, you can choose what size your Composer posted images appear in WordPress, by editing your “medium size” in your Media settings on your WordPress site.

To celebrate, I posted this picture of our office elephant to Facebook, Twitter and WordPress!

Office Elephant

Facebook Pages

You asked, we delivered. Facebook Pages were the number 1 requested new service. The code is live, you can now post to Facebook Pages from Composer.

Quick word of warning, you’ll need to reauth your Facebook account because we added the “manage pages” Facebook permission. Until you do that, you won’t see any pages on your account because Composer doesn’t have permission to ask them. Click here to reauth now.

To add a Facebook Page, go to the services page, then next to any of your Facebook accounts click the “add pages” link. The link only appears next to Facebook accounts, not next to other Facebook pages. You can post to multiple Facebook accounts and multiple pages within each of those accounts. It’s Facebook page posting galore!

Any questions, issues, or feedback, fire a comment below.

The Composer bookmarklet

Update: Now there are multiple bookmarklets here.

By popular request, Composer has a bookmarklet. Heavily inspired by the WordPress “Press This” feature, it uses the same javascript. You’ll find it on the compose screen under the Submit button.

It works in the usual way. Add it to your bookmarks then click it on any page. If you select some text on the page before you click it, that text will also be copied into the compose screen for you.

Tech

With this change, the compose screen supports 4 new url arguments: body, s = text selection, t = page title, and u = page url, on the new target url http://composer.io/posts/add/b.

The bookmarklet runs its javascript magic and constructs a url that looks like this (all values are url encoded):
http://composer.io/posts/add/b?s=foo&t=bar&u=http://foo.bar/

The body argument was added so you can roll your own bookmarklet and combine whatever javascript variables you want in your own order. The body argument is used first, then the others are combined in the usual way and appended.

For example, this url will load a compose screen like:

I'm the awesome body
This is the text I selected
Title of Awesome http://awesome.tld/

If you do roll your own, please let us know in the comments below. 🙂

Remember me and other tweaks

The remember me function now works. If you’re having issues, I recommend clearing cookies for this domain. The “remember me” text on the login page is also now a label, so clicking it will tick the checkbox. The devil’s in the details.

I’ve also deployed some behind the scenes changes that bring encryption to the application. If you created a link to WordPress before today, then the data you submitted was stored in plain text in the database. From today forward, this data is encrypted.

There was some discussion about whether or not this feature is important. Most people felt it was overkill to focus on security so early. I’m a big fan of the “better safe than sorry” philosophy when it comes to security, so I’m pleased that this code is live.

I also found a new deployment process, so bzr-upload replaces good old rsync! Deployments are now as simple as `bzr upload`.

Composer speaks SMS

Today I built an SMS API for Composer. It’s very basic, but it works. I just sent a text, had the message published, and got an SMS reply telling me which services succeeded (and sadly, failed).

Twitter failed because it wants to make every domain a link, and then wants to “shorten” that link to a 20 or 21 character t.co link. Very stupid. So twilio.com (10 characters) became http://t.co/Mnj6d4ZX (20 characters). With 3 domains (not urls) in my message, I gained at least 20 characters, and went over the 140 limit. But that’s another story!

I started out this morning (technically afternoon, but my morning 😉 ) building an SMS API for Composer. I wanted to be able to post from my mobile, without internet, and update my statuses. I chose Tropo because they’re free while in development. I figured it would be a while before I’d have the whole thing production ready, so a few months of free SMS gateway seemed appealing.

Alas, too many hours later, none of my texts reached Tropo, I couldn’t get a reply to work by IM or SMS, and so finally I decided to get agile and instead try Twilio. Bingo. It just worked. No issues, no bother. There are a couple of downsides. First, I got $30 bonus when signing up, but to “activate” my account I need to add a credit card. Second, it’s not free, it’s $1 a month per number plus 1c per text received and 1c to 7c or more per SMS sent, depending on the destination. But it works, and it worked in less than an hour.

I hard coded the mobile number to account id link, so if you want to use the SMS API, just let me know, tell me your mobile number, and I’ll add you to it! I’ll work on a better system where folks can register in time, but for now, it works. This is an MVP after all! 🙂

Now I can send one text message to Composer and update Facebook, Twitter, Identica and WordPress all at once. Happy days.