Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Twitter and facebook share with callbacks?

I have implemented facebook and twitter share to my website. The users are redirected to the following URLs when they click on the twitter or facebook share button.

http://www.facebook.com/sharer.php?u='+encodeURIComponent(location)+'&t='+encodeURIComponent(text)

http://twitter.com/share?url='+location+'&text='+text

I want to store the username and tweet link if possible in my database when someone the content through twitter and I want to store facebook profile url and name when someone shares it through facebook. Is it possible to retrive that data when someone has successfully completed the share process?

like image 555
Haris Avatar asked Feb 12 '11 19:02

Haris


2 Answers

The facebook javascript API allows you to share and gives you a callback

http://developers.facebook.com/docs/reference/javascript/FB.ui/

FB.ui(
   {
     method: 'feed',
     name: 'Facebook Dialogs',
     link: 'http://developers.facebook.com/docs/reference/dialogs/',
     picture: 'http://fbrell.com/f8.jpg',
     caption: 'Reference Documentation',
     description: 'Dialogs provide a simple, consistent interface for applications to interface with users.',
     message: 'Facebook Dialogs are easy!'
   },
   function(response) {
     if (response && response.post_id) {
       alert('Post was published.');
     } else {
       alert('Post was not published.');
     }
   }
 );

To use this you need to have set up a facebook application and put the following code directly after the opening body tag

<div id="fb-root">
</div>
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript"></script>
<script type="text/javascript">
    FB.init({
        appId: YOUR_API_KEY,
        status: true,
        cookie: true,
        xfbml: true
    });
    FB.Canvas.setAutoResize();
</script>

If you ask for basic permissions, you could then get the users facebook id and use this to store which users had shared.

like image 85
Tom Avatar answered Sep 23 '22 05:09

Tom


For Twitter call with callback, that is how I did it in Javascript:

// Include the Twitter Library
window.twttr = (function (d,s,id) {
  var t, js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
  js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
  return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
}(document, "script", "twitter-wjs"));

// On ready, register the callback...
twttr.ready(function (twttr) {
    twttr.events.bind('tweet', function (event) {
        // your callback action here...
    });
});

The twitter link is like this:

      <a href="https://twitter.com/intent/tweet?url=URLTOBESHARED">Share on Twitter</a>

Reference: https://dev.twitter.com/docs/intents/events

like image 26
tauanz Avatar answered Sep 22 '22 05:09

tauanz