O'Reilly logo

Facebook Cookbook by Jay Goldman

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Adding Missing PHP Client Library Methods

Problem

Some of the methods documented in this chapter throw a “Call to undefined method” error when I try to use them!

Solution

The bad news: five methods listed in the Developers Wiki are missing from the official Facebook PHP 4/5 Client Library: Photos.createAlbum(), Photos.upload(), photos.addTag(), Users.hasAppPermission(), and Users.setStatus(). The good news: you can add some of them yourself! The only tricky one is Photos.upload() because it requires you to submit raw data from a file upload field, so you might instead want to look at the extended version of the Client Library mentioned in Uploading a Photo.

These instructions are for the PHP 5 version of the Client Library, but you should be able to apply them to the PHP 4 version as well:

  1. Back up the copy of facebookapi_php5_restlib.php on your server, just in case we break something. You could also install them into an entirely new file and include it too, so that you don’t have to remember to make the same changes in future versions of the Client Library.

  2. Open the nonbackup version in a text editor.

  3. You can either insert all the new methods in one group, or you can find the right place in the file to insert them so that they’re with the related functions that the Client Library does include. I recommend the latter, so scroll down to line 596 and insert these two functions:

/** * Creates a new Photo album * @param string $name : name of the new album * @param string $location : location ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required