Our customer would like to track when users share links with each other (via facebook, twitter, email, whatever), and reward the person who initially shared the link. Currently we're keeping track via a parameter on the URL that contains the user's ID, i.e.
http://www.customer.com/items/item1?sharedBy=user1
so, when a user clicks on that link, we're currently posting a standard wall post to the user's wall with that URL. When user1's friends click that link, we can read the sharedBy parameter and give user1 some credit for the referral.
We're also moving some of our actions from the standard wall posts to new OpenGraph actions, which presents a problem. In order to be recognized by Facebook, the opengraph object has metadata like the following:
<meta property="fb:app_id" content="MY_APP_ID" />
<meta property="og:title" content="test item 1" />
<meta property="og:type" content="mynamespace:item" />
<meta property="og:url" content="http://www.customer.com/items/item1" />
<meta property="og:image" content="http://img.fark.net/images/2011/site/farkLogoBig.png" />
Regardless of which URL I submit to Facebook, it will use the canonical URL (og:url tag) when it constructs the link. So, doesn't have my tracking parameter.
I can think of a couple of ways to hack around it:
Is there any third method I'm not seeing that will let me force Facebook to add extra parameters to their link back to my page?
So, any better options than those two?
Although this is a subjective question asking for an opinion and not fact. I have an answer based upon both fact and opinion and I will point out the two. :)
1 is completely out since the last sentence is true about how Facebook will treat the different og:url tag values as different objects (fact). So 2, or some fashion thereof, is going to be the better of the two (opinion)