Facebook partager via FB.l'interface utilisateur
Je suis en train d'utiliser le code suivant que j'ai écrit basé sur la nouvelle documentation pour montrer à un "post pour nourrir le dialogue" ( https://developers.facebook.com/docs/javascript/reference/FB.ui ) mais j'obtiens l'erreur suivante "ReferenceError: FB n'est pas défini"
le code que j'utilise est la plus simple que je peux venir avec:
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxx',
status : true,
xfbml : true
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "http://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
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.'
});
Des idées?
EDIT 1
et si je veux ouvrir la boîte de dialogue lorsqu'un utilisateur clique sur un lien je voudrais utiliser jquery cliquez sur l'événement
$(".userActions a.facebook").click(function() {
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.'
});
});
ou ont le FB.l'interface utilisateur à l'intérieur d'une fonction qui accepte des paramètres et appel à cette fonction par exemple
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxx',
status : true,
xfbml : true
});
//Code in here will run once FB has been initialised
function FB_post_feed(method,name,link,picture,caption,description){
FB.ui({
method: method,
name: name,
link: link,
picture: picture,
caption: caption,
description: description
});
}
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "http://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
et quelque part dans le code HTML
$(".userActions a.facebook").click(function() {
FB_post_feed('feed','Facebook Dialogs','https://developers.facebook.com/docs/dialogs/','http://fbrell.com/f8.jpg','Reference Documentation','Dialogs provide a simple, consistent interface for applications to interface with users.')
}
OriginalL'auteur Andreas Traganidas | 2014-03-13
Vous devez vous connecter pour publier un commentaire.
Ok, il y a quelques conceptuel les erreurs que vous avez fait là.
Première:
Qu'est-ce censé faire? Ouvrir un dialogue partager sans interaction de l'utilisateur? FB.l'interface utilisateur doit être appelée lorsque la Part de Dialogue s'affiche normalement, pas juste après Facebook AsyncInit fonction.
Et, également, facebook sdk sera démarré en mode Asynchrone, comme le nom de la fonction suggère. Cela signifie FB ne sera pas défini dans le lieu que vous mettez la fonction.
Deuxième:
FB_post_feed fonction, dans ce cas, est une fonction locale à l'intérieur de fbAsyncInit fonction. Donc, vous n'avez pas accès à FB_post_feed fonction à l'extérieur fbAsyncInit.
En outre, FB.init est asynchrone, ce qui signifie que FB ne sera pas défini par le temps FB_post_feed est en cours de création.
Selon la façon dont votre code HTML est défini, et si cet identifiant est correct, le code
devrait fonctionner correctement. Cependant, un conseil: les Classes sont généralement utilisés pour le style à quelque chose. Il serait mieux si vous utilisez le bouton(ou "un" élément) id à la place.
OriginalL'auteur Joaobrunoah
J'ai eu le même problème et l'a résolu en demandant l'Facebook script en jQuery et puis l'initialiser:
OriginalL'auteur Ninita