POSSE to Facebook

 POSSE to Facebook  is the act of syndicating (at least some of) your content from your own site to Facebook.

Why
The reasons to POSSE to Facebook are the same for any other silo destination, staying in touch with your friends:
 * If you have friends who read and follow your activities using Facebook, then POSSEing to Facebook provides a way for you to own your content on your own site, while still staying in touch with those friends by providing them a copy.
 * If you participate in a group (especially if "private" or "secret") on Facebook, POSSEing to that Facebook group allows you to continue interacting with it.

Not a good reason:
 * Spam another network.

How
There are multiple ways to POSSE posts to your Facebook profile.

Using a CMS: (this subsection is a stub and needs expansion / real world examples)
 * WordPress
 * Bridgy Publish plugin
 * SNAP (unofficially, via scraping their web site, requires your Facebook session cookie)
 * Known

Existing automatable techniques (things you can setup or write code to do for you):
 * Via Twitter bridge
 * IFTTT
 * Bridgy Publish
 * Directly using Facebook API

Limitations of automation:
 * As of August 1 2018, you can't POSSE anything via the Graph API.
 * As of the 2.x Facebook API, you:
 * cannot POSSE comments or likes.
 * You can't PESOS them either.

Manual POSSE:
 * How to POSSE an event to Facebook

Expanded below with examples:

Via Twitter
As of 2018-08-01 The Twitter to Facebook bridge has also been shutdown (same time as their API shutdown).
 * 2018-08-01 TechCrunch: PSA: Automatic cross-posting of tweets to Facebook no longer works as of today

Previous examples:

Tantek via Twitter
Until 2018-08-01: undefined POSSEs notes, articles by name + permalink, replies (including RSVPs) out from tantek.com to Twitter, and then used to use the Twitter/FB integration functionality to cascade (except for plain replies) POSSEing from Twitter to Facebook by default (sometimes FB copies of tweets are manually hidden from timeline). Reasons:
 * insufficient marginal utility (typically) in writing a custom POSSE syndicator to FB.
 * Correct to not invest time coding this, would have been disabled by FB on 2018-08-01 anyway.
 * FB just gets abbreviated summaries (thus placing more value on tantek.com original posts).
 * FB usually shows a decent link-preview for the first link in from the tweet POSSE copy.
 * Exception: In 2014 Tantek started occasionally manually using Bridgy Publish to POSSE a few longer and more significant posts (notes and articles) directly from tantek.com to Facebook.

Tom Morris
tommorris POSSEs out from tommorris.org to Twitter, and then uses the Twitter/FB integration functionality to cascade that POSSEing from Twitter to Facebook, because he's lazy.

Jeremy Keith
POSSEs notes, photos, articles out from adactio.com to Facebook using If This Then That (IFTTT).

Bridgy Publish
No longer supported.



Using Bridgy Publish to Facebook, you can manually or automatically with your site POSSE directly from your site to Facebook.

See http://brid.gy/ for details on how to setup Bridgy Publish.

Tantek via Bridgy
Tantek used to use Bridgy to automatically POSSE photo posts to Facebook (since 2015). On some notes (multiple paragraphs longer than a tweet), undefined manually uses Bridgy Publish (via its web UI) to POSSE a few of his original posts to Facebook, and then manually updates his post storage to link with u-syndication from his original to the FB POSSE copy, since 2014-08-01:
 * original: http://tantek.com/2014/210/t1/trackattack-warmup-laps-first-time-did-all
 * Manual FB POSSE days later: https://fb.com/tantek.celik/posts/10101200515439233
 * http://tantek.com/2014/217/t1/completed-npsf-trackattack-again-notafluke
 * Manual FB POSSE same day: https://fb.com/tantek.celik/posts/10101208095508713

Notenoughneon via Bridgy
Emma Kuo used to use Bridgy to automatically POSSE some posts (using a checkbox in the Neonblog UI to enable it at posting time) to Facebook since 2014-08-01. The original is automatically updated with a u-syndication link.


 * original: http://notenoughneon.com/2014/8/1/1
 * FB POSSE: https://www.facebook.com/emma.kuo.5209/posts/338787636279430

Barnaby Walters via Bridgy
Barnaby Walters used to use Bridgy publish as of 2016-03-13 to automatically POSSE posts to Facebook. POSSE to facebook can be disabled by tagging the note with “nofb” (for twitter it’s “notwitter”).
 * Previously: was using Twitter’s automatic posting to Facebook. Stopped because Bridgy backfeed doesn’t follow the t.co’s original post link, preventing interactions from facebook from being backfed to my own site.

Facebook API
Posting to one's wall used to be supported with the Facebook 'Graph API'.
 * https://developers.facebook.com/docs/graph-api/reference/user/feed/#publish

Programming language libraries for doing so:


 * Ruby: fb_graph - see the feed! method and Koala: Graph API  method.
 * PHP: https://developers.facebook.com/docs/reference/php/ and Graph API - demo class also available for download.

See also:
 * 2013-08-01 OAuth of Fealty / "Resignation beyond sorrow on the Facebook Platform and beyond"

See Original
Some indieweb sites used to POSSE to FB and put in a "See Original" link in POSSE copies of posts there that link back to the original indieweb post! In addition, Bridgy looks for such "See Original" links as part of its original-post-discovery implementation.

Each Facebook post can include one custom "action" with any title and link. The parameter "actions" is a JSON-encoded map that contains a "name" entry ("See Original" in this case) and a "link" entry. Note: Bridgy currently only looks for custom actions named "See Original" (case-insensitive) when doing original-post-discovery.



On Facebook

Warning against using See Original

 * Based on problems we've had with Bridgy Publish, I (Kylewm.com) am starting to suspect that this use case is somewhere between unsupported and an unintentional bug in Facebook, which only seems to work for the app developer's account and may be shut down in the future. Facebook expects custom actions to be registered by your app, and custom Action Links to point to a common endpoint on the application's domain.


 * More evidence that this is unsupported. Facebook's API breaks action URLs that start with a number (e.g. a year) -- it thinks the number is a user ID and changes it to an app-scoped ID https://github.com/snarfed/bridgy/issues/368. This breaks Bridgy's (and any other app's) ability to do original-post-discovery based on "See Original" links.

PHP Example
Normally, a Facebook POST looks like this: $response = $facebook->api('/me/feed', 'POST', array( 'message' => $_POST['text'] ));

If you add the "actions" parameter, the request looks like this: $response = $facebook->api('/me/feed', 'POST', array( 'message' => $_POST['text'], 'actions' => array(           'name' => 'See Original',            'link' => $url          ) ));

(This is just a rough bit of sample code, of course you'll have to replace the  and   parts appropriately for your website.)

Mention Tagging
It does not appear to be possible to mention tag someone "inline" (like @-mentions on twitter) using the normal /me/feed API edge.


 * Below I tried to mention a user in a post and it was ignored: [[File:fb-post-me-feed-failed-mention.png]]

There are a few (less than perfect) alternatives:


 * The only way to mention tag someone via the API is to use Actions and Objects. You do not have to create a custom action -- for sharing a blog post, action= and object=  works. This requires that you embed OpenGraph metadata on your post permalink pages. To publish, send a POST to the /me/news.publishes edge and include the field  . [[File:fb-post-news-publishes.png]]
 * Your app must be manually approved (by FB staff) for "User Tagging" and "User Messages" for that specific action before you will be allowed to tag anyone but yourself.
 * Facebook has started showing "auto-posted" stories less and less. Not clear how much this affects POSSE, but I would guess this means we should steer clear of the Actions/Objects API.


 * You can person tag a post so that it shows up "&mdash; with [some people]" with the /me/feed edge. Add user IDs (user's app-scoped numeric ID or you can get a mention token from /me/taggable_friends.) to the  field. It used to be that you had to include a   (the ID of a Facebook Place), and the docs still indicate that this is the case, but experimentally, it seems to now work without a place. Note: your app needs to be approved for   and to get manual approval for Taggable Friends. [[File:fb-post-taggged-place-and-user.png]]

Liking
Bridgy used to use the Facebook API to implement POSSEing of likes from an original like post to your Facebook account. However, the 2.x Facebook API doesn't allow POSSEing comments or likes (or PESOS either).

To publish a "like" via the 1.0 API, find the Facebook object ID and post to its "likes" collection. The app will need to request the "publish_actions" permission in order to publish likes.

As of 2014-??-??, your site/code must go through a review process in order for your Facebook app to request the "publish_actions" permission for other users.

has noticed that Facebook is strongly pushing the JS SDK over making direct API calls. Using the JS SDK has some advantages such as it manages the login dialog and refreshing access tokens. If you use the API directly, your app will be responsible for refreshing the Facebook access tokens when they expire, and tokens can be as short-lived as 1 hour.

API disallows liking pages
Per https://github.com/snarfed/bridgy/issues/349 the Facebook API 2.x as of 2015-023 does not allow liking pages.

Thus to POSSE a "like" post of a Facebook page, you must do so manually.

Posting Photos via the Facebook API
There are generally two ways to POSSE an image to Facebook, roughly corresponding to photo vs. featured.

Bizarrely, the Graph API reference claims you cannot post photos via the API, but this is experimentally wrong and contradicted elsewhere in the documentation.

To post a photo, send a POST to the /me/photos edge, with the "url" parameter set to the public URL of the photo. Here is an example of a photo post:



To post a link to the original post with a featured image, send a POST to /me/feed with the "link" parameter set to the original's URL. You can either specify the featured image using OGP &lt;link> metadata, or you can explicitly set the "picture" parameter to the featured image URL. Here is an example of a link+picture post:



IndieWeb Examples
In rough order of implementation:

Ben Werdmuller
Ben Werdmüller uses idno on werd.io to post POSSE copies to Facebook since 2013-05-31. Example: Screenshot of original on werd.io and POSSE copy:
 * Original: http://werd.io/2014/i-like-my-coffee-yak-like-my-soul
 * Facebook copy: https://facebook.com/36802236_10100784559882869



Kyle Mahan
Kyle Mahan uses Red Wind on kylewm.com to post POSSE copies to Facebook since 2014-02-18. Examples:


 * Facebook copy: https://www.facebook.com/kyle.mahan/posts/10100845623360929 kwm-facebook-copy.png


 * Original: http://kylewm.com/note/2014/04/05/2 (currently showing almost palindromically duplicate facebook likes) kwm-fb-original.png

Aaron Parecki
Aaron Parecki uses p3k on aaronparecki.com to post POSSE copies to Facebook since 2014-02-20. On 2014-03-08 he started putting a see "See Original" link on POSSE Facebook copies.


 * Facebook copy: https://www.facebook.com/aaronpk/posts/10101380795292076 aaronparecki-posse-facebook-example.png


 * Original: http://aaronparecki.com/notes/2014/04/15/1/ aaronparecki-posse-facebook-original-example.png

Jeena Paradies
Jeena Paradies uses a simple rails app on jeena.net to post POSSE copies to Facebook since at least 2014-02-20
 * Facebook copy: https://www.facebook.com/jeenaparadies/posts/10152606923252678
 * Note "See Original: ..." link inline in Facebook POSSE copy content.
 * Original: https://jeena.net/notes/97

How we got here
Below are previous experimental examples of syndicating notes to Facebook.

These examples were created with the Facebook Publishing API using either the "message" or "link" parameter or both.

Note with inline citation link
Sent using only the "message" parameter, the citation link is part of the message.

http://farm8.staticflickr.com/7308/8734721454_2b04aa0a2b_o.png

Note with text and link parameter
Sent using both the "message" and "link" parameters. Facebook includes the note text, and creates an inline preview of the page, which shows the note text and the author's photo.

http://farm8.staticflickr.com/7298/8734700706_274e6e86ef_o.png

Link parameter only
Sent using only the "link" parameter. Facebook creates an inline preview of the page which shows the note text and the author's photo.

http://farm8.staticflickr.com/7325/8734697788_42b5407f37_o.png

Note text only
Sending only the note text and does not include the citation link. This is not recommended.

http://farm8.staticflickr.com/7317/8733602329_12252ef6c3_o.png