J'ai une page Web sur laquelle j'ai placé un bouton de type Facebook & partage et les fonctions de rappel javascript correspondantes sont également présentes.
Maintenant, le problème est que le rappel javascript ne se déclenche que lorsque l'utilisateur "aime" et ne semble pas se déclencher lorsque le bouton "Partager" est enfoncé.
C'est comme si je devais récompenser l'utilisateur chaque fois qu'il partage le lien. Alors que, avec "comme", un utilisateur ne peut aimer qu'un lien une fois (sans tenir compte de ce qui se passe/se rapprocher).
Je sais que le bouton Partager est obsolète. Mais Facebook fournit maintenant un bouton de partage avec un bouton similaire. Source: https://developers.facebook.com/docs/plugins/like-button/
Est-il possible d'activer cette méthode de rappel à partir de ce bouton de partage?
Voici mon code:
Code au début de la balise BODY dans mon code HTML: -
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId: ' My App ID ',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
FB.Event.subscribe('Edge.create', function(response) {
alert('You liked the URL: ' + response);
});
};
(function(d) {
var js, id = 'facebook-jssdk';
if (d.getElementById(id)) {
return;
}
js = d.createElement('script');
js.id = id;
js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
Code pour afficher les boutons J'aime & Partager: -
<div class="fb-like" data-href=" My URL " data-layout="button_count" data-action="like" data-show-faces="false" data-share="true"></div>
Vous ne pouvez pas obtenir le rappel de partage en utilisant ce bouton comme. Vous pouvez à la place créer un bouton de partage et invoquer le dialogue Feed à son clic.
FB.ui(
{
method: 'feed',
name: 'Facebook Dialogs',
link: 'https://developers.facebook.com/docs/dialogs/',
picture: 'http://fbrell.com/f8.jpg',
caption: 'Reference Documentation',
description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
},
function(response) {
if (response && response.post_id) {
alert('Post was published.');
} else {
alert('Post was not published.');
}
}
);
le code complet est ici
$("#bodyarea").on('click', '.share_fb', function(event) {
event.preventDefault();
var that = $(this);
var post = that.parents('article.post-area');
$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_US/sdk.js', function(){
FB.init({
appId: '822306031169238', //replace with your app ID
version: 'v2.3'
});
FB.ui({
method: 'share',
title: 'TTitle Test',
description: 'Test Description Goes here. Tahir Sada ',
href: 'https://developers.facebook.com/docs/',
},
function(response) {
if (response && !response.error_code) {
alert('Posting completed.');
} else {
alert('Error while posting.');
}
});
});
});
Changer votre identifiant d'application pour qu'il fonctionne
<div class="fb-like" data-href="page_link" data-layout="button_count" data-onshare="page_like_or_unlike_callback" data-onlike="page_like_or_unlike_callback" data-action="like" data-size="large" data-show-faces="true" data-share="false"></div>
Ajoutez simplement data-onlike="function_name"
et définissez la fonction dans votre javascript. Votre fait, votre fonction sera appelée dès que la personne cliquera comme sur votre site. Pour le bouton de partage qui est encore en mode de développement, je vous tiendrai au courant à ce sujet ..
Une manière alternative que j'ai faite ici à ceux qui ne veulent pas publier une application juste pour ça est:
jQuery("#div_share").click(function() {
var url = "http://www.facebook.com/sharer/sharer.php?u=YOUR_URL&title=YOUR_TITLE";
var openDialog = function(uri, name, options, closeCallback) {
var win = window.open(uri, name, options);
var interval = window.setInterval(function() {
try {
if (win == null || win.closed) {
window.clearInterval(interval);
closeCallback(win);
}
}
catch (e) {
}
}, 1000);
return win;
};
openDialog(url,'Facebook','width=640,height=580', function(){
jQuery("#div_share").hide();
jQuery("#formulario").show();
});
});
Il ouvrira une boîte de dialogue javascript à partager et saura quand l'utilisateur le fermera. Ce n'est pas garanti qu'ils partagent vraiment le contenu ... mais .. :)