PublishActionOfUser - Requested Features
From Facebook Developer Wiki
Contents |
[edit] Overview
- The current method of calculating Feed Points severely limits the number of Actions a Developer is able to assign to a User by including the number of the User's Friends in the calculation.
- A Developer is unable to publish an Action to a Non User that interacts with his/her Application through the Profile of a User.
[edit] Detailed Discussion
[edit] Point 1 - Calculation of Feed Points
Feed Points are currently calculated as follows:
FP = ceil( PRIORITY / 20 ) * FRIENDS
This means that one Action, with the lowest priority (1) will cost 1 FP per Friend of the User to whom it is published. A priority of 20 will also cost 1 FP per Friend of the User. If a User has 5 friends, their entire day's Quota of Feed Points will be used on a single Action.
An Action with the highest priority (100) will cost 5 FP per Friend of the User. This means that even with no Friends, it will use up the entire day's Quota. I believe that currently the quota is checked before the Action is created rather than after calculating the cost of the Action. This means that the Action at priority 100 will still go out to the same people and will still use up the entire day's Quota.
There is no difference in the Quota usage between priority 1 and priority 100 for a user with 5 friends.
[edit] Point 2 - Actions of Non-users
Actions are not only taken by Users, but by Non-Users visiting Users' profile pages. As there is no session information available for a Non-User, it is impossible to publish an Action to their feed -- despite the fact they most certainly interacted with the Application.
[edit] Solution
[edit] Point 1 - Calculation of Feed Points
Deducting Feed Points from an Application based on the number of Friends a User has unfairly affects the Application. If one Facebook User has decided to befriend another Facebook User, they have declared an interest in that user and in what that user does.
This means Developers are 'charged' when they send Actions, rather than when someone receives the Action.
If, and only if, Facebook has a fundamental problem with the above, then the calculation of feed points must change as follows:
FP = ceil( PRIORITY / 20 * FRIENDS )
This means that an action with priority=1 costs one-twentieth of a feed point per friend. Five friends will cost one-quarter of a Feed Point, rounded up to 1 point. Twenty friends will then also cost 1 Feed Point.
[edit] Point 2 - Actions of Non-users
A Developer whose Application is interacted with by a Visitor to a User's profile should have the ability to publish an Action to that Visitor.
I recommend that this is done by the use of an FBML tag.
<fb:publish-action action="Visited Foobar's Profile" priority="1" />
There will be several restrictions placed on the use of this tag:
- It will be stripped from Profile FBML and only allowed on canvas or in response to mock-ajax requests
- If the Visitor is a Non User, a Facebook Prompt will appear asking them if they wish to have the action recorded against them
- If the Visitor is a User, the action does not require confirmation
Any Facebook User whose Action is published will cost the Application Feed Points as set out in Point 1, whether they are a User or a Non User.
This is done using FBML as the Action takes place after the page has loaded, not during page load.
[edit] Discussion
Please do not edit this page with any discussion. At the top of this page there is a 'discussion' tab. That is the correct place for discussion.
[edit] Supporters
- RickMeasham
- Skyler Clark (blu)
- Alex Gaynor (Alex_Gaynor in IRC)
- Eclipsor
- Paul Wells
- Clayton Scott (clayton on IRC)
- Tedward2 -- I'm not sure if the solution listed here is the best, but I agree that something should change.
[edit] Definitions
When used with a leading uppercase letter, the following terms have specific meaning.
- Application
- An externally developed application using the Facebook API
- Facebook User
- A logged-in Facebook user
- User
- A logged-in Facebook user who has installed the application on their account
- Non-user
- A logged-in Facebook user who has not installed the application on their account
- Friend
- A Facebook User who has created a Facebook relationship with another Facebook User
- Visitor
- A Facebook User who views the Profile of a Facebook User
- Action
- The result of using the API call
publishActionOfUser
