| 1 | NAME |
|---|
| 2 | Facebook.par - Facebook support for BarnOwl |
|---|
| 3 | |
|---|
| 4 | DESCRIPTION |
|---|
| 5 | The Facebook module implements Facebook support for BarnOwl. |
|---|
| 6 | |
|---|
| 7 | SYNOPSIS |
|---|
| 8 | (1) Create an empty file ~/.owl/facebook (you can use the command |
|---|
| 9 | `touch ~/.owl/facebook`), in order to enable the module. |
|---|
| 10 | |
|---|
| 11 | (2) Run ":reload-module Facebook" inside BarnOwl. |
|---|
| 12 | |
|---|
| 13 | (3) Follow the instructions in the admin message. BarnOwl will |
|---|
| 14 | ask you to log in via an OAuth URL, and run ':facebook-auth' |
|---|
| 15 | with the resulting URL. It will then ask you to record the |
|---|
| 16 | resulting access token in your ~/.owl/facebook file, so you do |
|---|
| 17 | not have to login on subsequent BarnOwl sesions. |
|---|
| 18 | |
|---|
| 19 | This token is valid until you change your |
|---|
| 20 | Facebook password or you revoke permissions for Barnowl at: |
|---|
| 21 | http://www.facebook.com/settings/?tab=applications&app_id=235537266461636 |
|---|
| 22 | |
|---|
| 23 | (4) Start receiving wall updates in Barnowl! |
|---|
| 24 | You can post updates with the ":facebook" command. |
|---|
| 25 | |
|---|
| 26 | POLLING |
|---|
| 27 | Facebook.par polls for normal messages once a minute. To disable |
|---|
| 28 | polling, you can unset the 'facebook:poll' variable in BarnOwl. |
|---|
| 29 | |
|---|
| 30 | TODO |
|---|
| 31 | * Polling Facebook is pretty slow (on order of a second or more), |
|---|
| 32 | and blocks the entire BarnOwl interface. We need to confront |
|---|
| 33 | Perl's threading demon. |
|---|
| 34 | * We currently expose the underlying post ID for disambiguating |
|---|
| 35 | instances. Use something more user-friendly. |
|---|
| 36 | * No messaging support. |
|---|
| 37 | * No auto-completion support. |
|---|
| 38 | * No posting to an arbitrary user's wall. |
|---|
| 39 | * See code comments for more work items! |
|---|
| 40 | |
|---|
| 41 | TECHNICAL NOTES |
|---|
| 42 | This module uses 100% undeprecated Facebook Graph API, and should be |
|---|
| 43 | an interesting case study of how to implement a desktop application in |
|---|
| 44 | the new Facebook world order. In particular, we do not use the old |
|---|
| 45 | infinite session keys trick described in |
|---|
| 46 | <http://www.emcro.com/blog/2009/01/facebook-infinite-session-keys-no-more/>, |
|---|
| 47 | instead, we use offline_access to get non-expiring tokens. |
|---|
| 48 | |
|---|
| 49 | If we decide to extend our permissions to include read_friendlists |
|---|
| 50 | (for filtering) and rsvp_event (RSVP from BarnOwl), we will need |
|---|
| 51 | to make sure the UI for upgrading is correct. |
|---|