News

Thursday, January 31, 2008 at 2:32pm

Published by Dave Morin

Are you a ninja developer looking to work with some of the biggest brands on earth? Are you the head of marketing at one of the biggest brands on earth looking for a killer developer to take your brand to the social graph?

The Facebook Platform Marketplace is here to help you. We've harnessed the power of Facebook Marketplace technology to build a quick and efficient way for you to connect with the other people or businesses to make your idea for a Facebook Platform application into a reality.

Everyday the team here at Facebook talks with thousands of people, businesses, and some of the biggest brands worldwide who are looking to find contract development services, or developers to join their team. We're planning on sending every single one of them to the Facebook Platform Marketplace, so the opportunity is huge!

Get started by checking out the front page of the Facebook Developer application at:

http://facebook.com/developers

You'll see a new Marketplace section where you can post two different types of listings:

1) Facebook Platform - Developers Wanted: If you are the head of marketing for a large brand, an independent business person with a great idea, or just someone looking for a teammate in building an application you can post here. Be sure to post exactly who or what type of firm you are looking for. We also recommend that you make sure to include the following information when you setup your listing:
  • - Company Name
  • - Company Description
  • - Clear Description of What You Are Looking to Build
  • - Budget Estimate

2) Facebook Platform - Developers Available: If you're a single ninja developer looking to do some hacking on the side and are willing to take on some projects, or if you are a full-service, premiere Facebook Platform development shop, be sure that you are listed here. We'll be sending everyone we talk to to check out this page. We also recommend that you make sure to include the following information when you setup your listing:
  • - Company Name
  • - Company Description
  • - Examples of Applications Built
  • - Typical Rates
  • - Facebook Page URL
  • - Website URL
  • - A Way to Contact You

We're excited about the community of developers and development shops that are forming out there to build and consult on Facebook Platform, and we're even more excited to bring everyone to the same place in the Facebook Platform Marketplace. Over time we'll be adding lots of cool new features to make the market even more efficient.

Enjoy!

Tuesday, January 29, 2008 at 12:59pm

Published by James Wang

In an effort to improve how application images are served on the Facebook Platform, we will be making some changes to the application image cache. These changes should be seamless for the most part: as described in the developer wiki, any images that you currently publish in FBML outside of your canvas page are served using Facebook’s resources, which protects your servers from potentially high load. The src attribute of any img tags are automatically rewritten, so you as developers don’t need to do anything special to get this to work. All of this will continue to work as it does now.

However, one important change in the new design is that we will need to deprecate the method fbml.refreshImgSrc, which currently allows you to make Facebook re-request an image from your servers in the event that the image has changed. After we switch to the new system, if you need an image to be re-requested and cached, you will need to change the URI of your image to something new, which you can do by appending a random variable in the query string, (such as the unix timestamp). We suggest that you use a GET variable called "fbrefresh" to hold the random variable.

For example, if you publish an image to a user's profile with src = "http://www.yourserver.com/pic001.jpg" and that image changes on your server and you want to force that image to be refreshed, then under the new system you should republish the FBML to the profile with the a new img src = "http://www.yourserver.com/pic001.jpg?fbrefresh=1201226471". If you publish the same image to a lot of profiles, and need to periodically update all of those images, then you can achieve this by wrapping that image in a fb:ref tag and updating the image within that fb:ref as necessary.

It’s true that we currently request you not to use these "cachebreakers" to work around problems with the image cache, but with the new backend design for our image cache, this will actually be the recommended method for updating an image. Also, if you need us to remove an application image from the cache for legal reasons, we will provide an email for you to contact, and we will remove the image(s) from the cache after you have removed them from your servers.

These changes will be going out in mid- to late-February. Please don't switch over to the new system immediately, as using cachebreakers is still a problem for the current implementation. But we hope that this gives you ample time to make the necessary changes in your code, and we will publish another post when the changes take effect. We apologize for the inconvenience. If you have any questions or concerns, please contact developers-help@facebook.com.

Friday, January 25, 2008 at 5:03pm

Published by Wei Zhu

This JavaScript client library allows you to make Facebook API calls from any web site and makes it easy to create Ajax Facebook applications. Since the library does not require any server-side code on your server, you can now create a Facebook application that can be hosted on any web site that serves static HTML. An application that uses this client library should be registered as an iframe type. This applies to either iframe Facebook apps that users access through the Facebook web site or apps that users access directly on the app’s own web sites. Almost all Facebook APIs are supported. The exceptions are:

  • Photo upload API is not supported.
  • profile_setFBML() can only set FBML on the current user’s profile.

Using this client library is easy. You just need to follow two steps:

Here is the sample code for getting the current user’s friends list.

<!-- Output area to show the output from Facebook API -->
<textarea style="width:500px;height:300px;" id="_traceTextBox"><
     /textarea>

<script src="http://static.ak.facebook.com/js/api_lib/FacebookApi.debug.js"
 type="text/javascript"></script>
<script type="text/javascript">
// Create an ApiClient object, passing app’s api key and
// a site relative url to xd_receiver.htm
var api = new FB.ApiClient('<insert_your_app_key_here', '/xd_receiver.htm', 
   null);
        
// require user to login
api.requireLogin(function(exception) {

    window.alert(“Current user id is “ + api.get_session().uid);
  
    // Get friends list  
    api.friends_get(function(result, exception) {
      Debug.dump(result, 'friendsResult from non-batch execution ');  
    });       
});
</script>

For more information, please visit http://wiki.developers.facebook.com/index.php/JavaScript_Client_Library.

Friday, January 25, 2008 at 12:51am

Published by Dave Morin

Today we announce a partnership with Amazon Web Services to provide Facebook Developers with quick and easy setup on AWS' instantly scalable infrastructure. Through this partnership we have worked alongside both Amazon and Facebook Developers who are experts in using AWS to create a few awesome resources to get you started quickly and easily.

Including:
- Facebook Platform + Amazon Web Services Tutorial
- HelloWorld Facebook Application for Amazon EC2 and S3
- Amazon Web Services Simple Monthly Cost Calculator
- AWS case studies from iLike, Booze Mail, and SocialMoth Secrets.

We are excited to be partnering with Amazon Web Services to provide developers with these resources for instant scalability. Check it out now >

Wednesday, January 23, 2008 at 11:45pm

Published by Olaoluwa 'Ola' Okelola

Starting tonight, we are converting Facebook Application About pages to use the Facebook Pages infrastructure and format. This change enriches application About Pages and provides additional functionality. Users can become fans of your application and review it. Adding an application is different from becoming a fan of the application, users can choose either or both. Every Application Developer automatically becomes becomes an administrator of the About Page. Admins can send updates to their applications' fans and add other applications (for example, Photos) to your About Page.

This change also improves your application's statistics. These new statistics include more comprehensive usage statistics, detailed HTTP Requests and add and removal statistics.

There are subtle differences between regular Facebook Pages and application About pages. For example, the Reviews application is installed on About pages by default and cannot be removed. Your application’s About page cannot have a Mini-Feed.

All FBML tags that work with Facebook Pages continue to work on the new About Pages.

As for the Facebook API, you can use the Pages.getInfo API call to retrieve information regarding your About Page, but it returns information for these fields only: name, pic_big, pic_small, pic, pic_square, pic_large, type, and has_added_app. The other fields are specific to standard Facebook Pages and depend on the different Page categories. If you use the Fql.query API call to query the FQL page table, it returns the same values as the Pages.getInfo call. The Pages.isAppAdded and Pages.isAdmin methods behave normally, while Pages.isFan does not work on About pages. The Pages.isAdmin call returns the current developers of an application. Since Application About Pages cannot have a Mini-Feed, Feed.publishTemplatizedAction does not work for About pages.

A few developers have created Pages for their applications so that they can use the additional functionality provided by Pages. If you did this, you can transfer the fans and reviews from your existing Page to the new application About Page. Please send us an email at app-about-page@publists.facebook.com with your application ID or application key, Page ID and the developer’s user ID. The developer requesting the migration should be an admin of the original Page. If you choose to migrate your existing Page we will delete it after the migration completes.

Send us your feedback. We'll continue to improve Facebook Platform to serve the interests of both users and developers.

Wednesday, January 23, 2008 at 10:40pm

Published by Wei Zhu

The batch API allows you to combine multiple individual operations into a single request. This will significantly improve your application latency and reduce traffic load on Facebook servers. We have also updated our PHP5 client library to make using the batch API easier. Here is an example that calls the Facebook API in no-batched mode,

$friends = $api_client->friends_get();
$notifications = $api_client->notifications_get();

The above code can be rewritten to use the batch API as follows:

$facebook->api_client->begin_batch();
$friends = & $api_client->friends_get();
$notifications = & $api_client->notifications_get();
$facebook->api_client->end_batch();

We’d encourage developers to try it out and send us feedbacks. To learn more about the batch API check out the documentation at http://wiki.developers.facebook.com/index.php/Using_batching_API

Thursday, January 17, 2008 at 11:30pm

Published by Ari Steinberg

As part of the user experience improvements we announced yesterday, we're changing the rules for how Feed stories can be published with the feed.publishTemplatizedAction API method. The new policy moving forward will be that this function should only be used to publish actions actively taken by the "actor" mentioned in the story. As an example, feed stories that say things like "John has received a present" are no longer acceptable. The product motivation behind this change is that Feed is a place to publish highly relevant stories about user activity, rather than passive stories promoting an application.

To foster this intended behavior, we are changing the way the function works: the "actor_id" parameter will be ignored. Instead the session_key used to generate the feed story will be used as the actor. Since previously the actor_id could be set to be a page_id, we'll now support a new parameter for Facebook Pages: page_actor_id. You are encouraged to switch over to the new parameters right now, though we'll continue to support the "actor_id" parameter for the next month to allow you time to transition. The PHP client library and the documentation have been updated to reflect the new version of the function.

Although we will continue to support the old parameter for the next month to allow you time to update your code as necessary, we appreciate your responsiveness in eliminating "non-active" usage of feed stories as soon as possible. In order to ensure a high quality experience for users, starting 9am Pacific time Tuesday 22 January we may contact you, or in severe cases initiate an enforcement action, if your stories are not complying with the new policy, especially if the volume of non-complying stories is high.

Thursday, January 17, 2008 at 1:49am

Published by Paul C. Jeffries

Since our launch in May 2007, we’ve been thrilled to see so many creative uses of Facebook Platform. We’re delighted by the resources developers have invested, the value they’ve delivered to our community of users, and the trust in Facebook that indicates.

As part of our continuing iteration of Facebook Platform, we constantly try to clarify and adjust policies and technical functionality to better protect users and enhance user experience. (The recent prohibition on the word “message” in feed stories is an example.) By ensuring the best environment for users, we think we’re also best serving the developer community.

While we understand that good-faith errors are possible, developers should always be cognizant of their obligations under the Developer Terms of Service and other elements of Facebook policy. Effective immediately, we’re restricting access for a period of time to Mini-Feed, News Feed, notifications, and other Facebook Platform functionality for any applications engaging in deceptive or malicious behavior. This measured action is in response to multiple violations of Facebook policies, generating an anomalously high level of user complaints.

The vast majority of the Facebook developer community is well-intentioned and unlikely to ever be impacted by an enforcement action; we strive to work with developers to correct any issues we discover. But when necessary we will act quickly to correct problems and ensure a better Facebook Platform experience for all.

If you’re not sure if something is ok, please drop us a line at developers-help@facebook.com before implementing it; we’d be happy to assist you. Also please contact us if you wish to report a Developer Terms of Service violation or suggest changes to policy to improve user experience or clarify meaning.

We’re excited about the growth of Facebook Platform and always do our best to ensure a thriving application ecosystem where user experience is paramount -- which we believe also creates the best developer experience.

Wednesday, January 16, 2008 at 3:38am

Published by Marcel Georgés Laverdet II

Back in September we launched FBJS for Facebook Platform. FBJS is a layer on top of Javascript that gives you the full power of Javascript in your applications. FBJS enables developers to create richer and more deeply integrated applications, with features like DOM manipulation and AJAX.

One caveat to FBJS, however, is that most 3rd-party libraries are incompatible, which makes things like animation a little bit tricky. So we decided to create an animation library for FBJS to help developers out. Unsatisfied with the state of 3rd-party animation libraries, we built our own animation library from scratch. We've been using this new animation library internally for several months for animations around Facebook, and everyone here has been very happy with it. Now we're ready to release it to developers on Facebook Platform so you can use it too.

And then we thought: "why stop there?" The library had very little Facebook-specific code, so we took some time to modularize it, and now we're open-sourcing it for everyone. The code is released under a modified BSD license, which means you're free to use it pretty much wherever you want.

So check out the documentation and enjoy! http://wiki.developers.facebook.com/index.php/FBJS/Animation.

For applications using FBML canvas pages and profile boxes, you can start using FBJS Animation immediately. If you want to use FBJS Animation outside of Facebook, grab the Javascript from our open source portal and include it on your site. After that, the syntax is exactly the same as it is on Facebook.

Thursday, January 10, 2008 at 9:55pm

Published by Julie Zhuo

We wanted to give you a heads up about some upcoming changes to the profile and how your application’s profile boxes will work. As time has gone on, we’ve received increased complaints from users that friends’ profiles are getting too cluttered, and that people are having trouble finding the information they are looking for on their friends’ profiles. On the other side, users are complaining that their own profiles are cluttered, and they have installed so many applications that it has become overwhelming to un-clutter it.

To benefit all users, therefore, we will soon be launching a “profile clean-up” tool. Similar to how your computer’s desktop will remind you to get rid of unused icons, this tool will give users the option to move extra profile boxes to an “extended portion” of their profile. Users can choose to move these boxes; we will recommend that they keep the Friends Box, Mini-Feed, Wall, Basic and Personal Information as well as the top 12 application boxes they have added. At the bottom of the profile will then be a link to “Show Extended Profile”. Any user will be able to expand the profile at any point in time to see all the applications a user has added to their profile.

We believe this change will allow users to interact with all of their applications in a more meaningful way. In addition to allowing the profile page to load faster, this means users will have an easy way to publicly acknowledge their favorite applications. We want platform applications to be a fully integrated piece of Facebook, which is why we don’t want users to feel that these applications have somehow infringed on the simplicity of their Facebook experience. We will continue to keep you posted on any changes we make to Facebook and to Platform.

Tuesday, January 1, 2008 at 6:04pm

Published by Dave Morin

At Facebook, we care deeply about creating technologies that facilitate the sharing of information through the social graph in new and innovative ways. With Facebook Platform, as we iterate, make changes, and add new capabilities we want to enable developers to provide new ways for users to share information and communicate though the social graph. Over time, we've gradually opened up the limits on notifications, requests, and email communication.

Recently, we've seen a few developers who have developed multiple applications abusing the limits we have put in place on email notifications. Specifically, these developers have been sending notification emails to users for one application with another application, in order to "pool" the total quota of email notifications together.

Additionally, on occasion we've seen applications deceiving or tricking users by putting links into Mini-Feed, notification, and notification Email communications which link to the installation of a different app in a similar way. Thus, tricking the user into installing an application which they didn't intend to.

Starting today, we'll begin blocking links in Mini-Feed, Notifications, and Notification Emails which lead to the installation of another application in the hopes that developers focus on user experience and engagement being paramount, not deceiving users for the sake of growth.

Happy Hacking!