This week, we announced our Platform stability initiatives including a 90-day breaking change policy and a revamped beta tier with processes to improve Platform testability. We also published How-To: Build an app on Facebook with Fluid Canvas.
Exporting data from Facebook
Over the past few weeks, we have received a number of questions about apps that export data from Facebook into other social networks. We wanted to take this opportunity to clarify our policies.
If you would like to export your own data from Facebook or want to build an app that exports data from Facebook to another social network, you should use Download Your Information. Download Your Information enables any person who uses Facebook to easily download all of their content on Facebook (including all status updates and photos) in a single zip file. We have recently begun adding microformats to the HTML included with Download Your Information to make this format easier for other apps to consume. We also include the email addresses of all your friends who have opted to make their address available through this download process.
Facebook Platform is designed to enable rich social apps, not to be used as a data export tool. We have taken great care in both our product and our policies to ensure that users are in control of what data is available to apps and how it is used. For example, we have policies that prohibit Platform apps from transferring data to third parties such as ad networks and data brokers and we routinely disable apps that violate these policies.
If you are building an app whose purpose is to export data to another social network such as Google+, you should use Download Your Information, not Facebook Platform. We feel that Download Your Information strikes an appropriate balance between preserving the ability of people to transfer their data off of Facebook while protecting the privacy of their friends on Facebook.
Reading and Managing Notifications
As we mentioned in a previous post, you can now access a user’s notifications via the Graph API with the manage_notifications
permission:
Then, issue an HTTP GET
request with this permission to:
https://graph.facebook.com/USER_ID/notifications
For example:
<?php $app_id = 'YOUR_APP_ID'; $app_secret = 'YOUR_APP_SECRET'; $my_url = 'YOUR_URL'; $code = $_REQUEST["code"]; echo '<html><body>'; if(!$code) { // Get permission from the user to publish to their page. $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=manage_notifications"; echo('<script>top.location.href="' . $dialog_url . '";</script>'); } else { // Get access token for the user $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" . $app_secret . "&code=" . $code; $access_token = file_get_contents($token_url); $notifications = "https://graph.facebook.com/me/notifications?" . $access_token; $response = file_get_contents($notifications); $resp_obj = json_decode($response,true); echo '<pre>'; print_r($resp_obj); echo '</pre>'; } echo '</body></html>'; ?>
You can also do this on the command line with the curl command:
curl -F 'access_token=...' \ -F ‘method=GET’ \ https://graph.facebook.com/me/notifications
To get all of a user’s notifications, including ones they’ve already read, include the include_read
parameter:
https://graph.facebook.com/USER_ID/notifications?include_read=1
<br/>
You can also mark a notification as read by issuing a POST
to:
https://graph.facebook.com/NOTIFICATION_ID?unread=0
You can find more information in the User object documentation.
Reading Achievements
We launched the achievement API for games a few weeks ago to enable you to publish user achievements in the Canvas Ticker. Today we are completing the API with the ability to read achievements.
You can read the set of achievements registered for your app by issuing an HTTP GET
request to:
https://graph.facebook.com/APP_ID/achievements?access_token=APP_ACCESS_TOKEN
You can read the set of achievement(instance) objects for a user by issuing an HTTP GET
request to:
https://graph.facebook.com/USER_ID/achievements?access_token=...
user_games_activity
permission then this returns the achievements for all games. Otherwise it returns achievements only for your app.friends_games_activity
permission then you can also access achievements for the user's friends by issuing a HTTP GET
request to /FRIEND_ID/achievements
.You can find more information in the achievement API documentation.
App Attribution in Photo Tag Stories
We will now publish an attribution link to your app when the app adds tags to photos. For example:
Users clicking on the link will be taken to your app. In addition, users will have the ability to block your app in the “X” menu.
Reminders: Migrate to OAuth 2.0 + SSL by October 1, 2011
As stated in our Roadmap, by October 1, 2011:
Increasing transparency around policy enforcement
We continue to launch improvements to our enforcement systems to help you continue to build great user experiences. A month ago, we added better user feedback metrics, granular enforcement, and a new disabled mode.
This week, apps have started receive a warning email before any enforcement action is taken. This warning email is sent when an app triggers our enforcement systems and does not appear to be malicious. Once a warning notice is sent to your app via email, we ask you to promptly address this issue within 48 hours, after which our automated systems will evaluate your app once again. Please note we reserve the right to take action against your app even before the end of this 48 hour period.
For more information on your app’s performance, please visit your App Insights. We suggest you actively monitor user reports, volume of content published per user, and any spikes in share or install activity. Note that users often respond negatively to behavior that violates our Platform Policies, so we also encourage you to ensure your app is in compliance by reviewing our policies.
Deprecating Dashboard APIs
With the recent update to our Games Dashboard and Canvas Page with the Ticker and Fluid Canvas, we have removed the section which displayed the News that developers published via the Dashboard APIs in the Games Dashboard. As part of this, these APIs are now deprecated. We will be removing them in 90 days December 2, 2011.
The Dashboard count APIs continue to work but we recommend that developers use Request 2.0 which automatically sets the app bookmark counts and drives traffic directly to your apps.
Change in Session Redirect Behavior
This week, we started adding a fragment #_=_
to the redirect_uri when this field is left blank. Please ensure that your app can handle this behavior.
FB.Canvas.setAutoResize Issues
There have been several bugs reported about how FB.Canvas.setAutoResize doesn’t set the height of the iframe correctly in some scenarios. We tried to push out a fix on Tuesday which would fix these bugs but it created some additional issues for existing apps which forced us to revert the change.
We recommend that for the time being please use the option Fluid
, or use Settable
and explicitly set the height of the iframe using FB.Canvas.setSize. The key issue is around computing the size of your content accurately, to enable us to auto-resize the iframe to the size of your content. This happens when you call the FB.Canvas.setAutoResize
method or call FB.Canvas.setSize
without an explicit height parameter. Please bear with us as we try to find a solution.
Dev Blog Email Issues
The Dev Blog is having issues with sending posts to email subscribers. We are currently working on a fix and will have it out by the 14th. In the meantime, please continue to visit the blog every Friday.
Docs
We updated the FQL documentation for the following tables:
75 docs are under review.
Bugs
Bugzilla activity for the past 7 days:
Facebook Stack Overflow Activity
Activity on facebook.stackoverflow.com this week: