web-dev-qa-db-fra.com

Vous voulez un titre / une image / une description personnalisée dans le lien de partage facebook à partir d'une application flash

Duplicate possible:
Comment Facebook Sharer sélectionne-t-il les images?

Je suis en train de créer une application flash qui met en évidence de graves accidents de la route lorsque vous conduisez à différentes vitesses. Je veux que l'utilisateur puisse partager cette information sur facebook. Cependant, cela exige que je puisse personnaliser le texte qui apparaîtra sur Facebook d'une manière ou d'une autre.

Je crée une URL qui s'ouvre dans une fenêtre vierge (à partir de l'application flash elle-même). Je spécifie les paramètres u et t, en mettant le message généré comme paramètre t. Mais cela semble toujours être remplacé par le titre des pages. Si j'omets la balise title du code html, le nom du fichier est utilisé (en remplaçant également le titre spécifié).

 http://www.facebook.com/sharer.php?u=http://espentokerud.com/face/addiste.html&t=test; 

J'ai aussi essayé d'URL-encoder l'URL, mais en vain.

 http://www.facebook.com/sharer.php?u=http%3a%2f%2fespentokerud.com%2fface%2faddiste.html&t=test; 

J'ai également essayé d'utiliser l'API addthis, mais je ressens les mêmes inconvénients. La chose amusante est que si je poste un swf, le titre et la description peuvent être personnalisés, et il est également possible de spécifier une capture d'écran. Mais si je ne poste pas un swf, cela semble être ignoré.

Je suis conscient que je peux utiliser des balises méta sur la page html pour spécifier la vignette, le titre et la description, mais une partie de ce contenu doit être basée sur des calculs effectués dans l'application Flash.

54
Ezop

Mise à jour 2016

Utilisez le Partage du débogueur pour déterminer quels sont vos problèmes.

Assurez-vous de suivre Facebook Partage Best Practices .

Assurez-vous que vous utilisez le Open Graph Markup correctement.

Réponse originale

Je suis d'accord avec ce qui a déjà été dit ici, mais par documentation sur le site de développement de Facebook , vous voudrez peut-être utiliser les balises META suivantes.

<meta property="og:title" content="title" />
<meta property="og:description" content="description" />
<meta property="og:image" content="thumbnail_image" />

Si vous ne parvenez pas à atteindre votre objectif avec les balises méta et que vous avez besoin d'une version intégrée de l'URL, voir @ Lelis718 réponse ci-dessous .

65
Snekse

Je pense que ce site a la solution, je vais le tester maintenant. On dirait que facebook a changé les paramètres de share.php donc, afin de personnaliser le texte et les images de la fenêtre de partage, vous devez placer les paramètres dans un tableau "p".

http://www.daddydesign.com/wordpress/how-to-create-a-custom-facebook-share-button-for-your-iframe-tab/

Vérifiez-le.

29
Lelis718

J'ai eu le même problème il y a une semaine.

Tout d’abord, j’ai remarqué que votre URL comportait une esperluette précédant la chaîne de paramètre, mais elle aurait probablement besoin d’un point d’interrogation pour commencer la chaîne de paramètre, suivie d’une esperluette entre chaque paramètre supplémentaire.

Désormais, vous devez échapper votre URL mais également échapper deux fois aux paramètres de l'URL (titre ou autre contenu dont vous avez besoin pour fournir du contenu dans le partage) que vous transmettez à l'URL, comme suit:

var myParams = 't=' + escape('Some title here.') + '&id=' + escape('some content ID or any other value I want to load');
var fooBar = 'http://www.facebook.com/share.php?u=' + escape('http://foobar.com/superDuperSharingPage.php?' + myParams);

Vous devez maintenant créer le fichier superDuperSharingPage.php ci-dessus, qui doit fournir le titre dynamique, la description et le contenu de l'image de votre choix. Quelque chose comme ça devrait suffire:

<?php
    // get our URL query parameters
    $title = $_GET['t'];
    $id = $_GET['id'];
    // maybe we want to load some content with the id I'll pretend we loaded a
    // description from some database in the sky which is magically arranged thusly:
    $desciption = $databaseInTheSky[$id]['description'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title><?php echo $title;?></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="title" content="<?php echo $title;?>" />
  <meta name="description" content="<?php echo $desciption;?>" />
  <!-- the following line redirects to wherever we want the USER to land -->
  <!-- Facebook won't follow it. you may or may not actually want || need this. -->
  <meta http-equiv="refresh" content="1;URL=http://foobar.com" />
</head>
<body>
  <p><?php echo $desciption;?></p>
  <p><img src="image_a_<?php echo $id;?>.jpg" alt="Alt tags are always a good idea." /></p>
  <p><img src="image_b_<?php echo $id;?>.jpg" alt="Make the web more accessible to the blind!" /></p>
</body>
</html>

Faites-moi savoir si cela fonctionne pour vous, c'est essentiellement ce qui a fait pour moi :)

4
defines

J'ai un module Joomla qui affiche des choses ... et je veux pouvoir partager ces choses sur facebook et non la méta description du titre de la page ... donc ma solution consiste à avoir un fichier secret .php sur le serveur qui est exécuté quand il détecte le FB

$_SERVER['HTTP_USER_AGENT']

if($_SERVER['HTTP_USER_AGENT'] != 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)') {
    echo 'Direct Access';
} else {
    echo 'FB Accessed';
}

et transmettez des variables avec l'URL qui formate cette page avec le titre et la méta description de l'élément que je souhaite partager à partir de mon module joomla ...

une name="fb_share" share_url="MYURL/sharer.php?title=TITLE&desc=DESC"

j'espère que cela t'aides...

2
petsoukos

J'ai en fait un problème similaire. J'ai une page avec plusieurs boutons radio; chaque bouton définira les balises méta de titre et de description de la page, via JavaScript lors du changement.

Par exemple, si les utilisateurs sélectionnent le premier bouton, les balises META indiqueront:

<meta name="title" content="First Title">
<meta name="description" content="First Description">

Si l'utilisateur sélectionne le deuxième bouton, cela change les balises méta en:

<meta name="title" content="Second Title">
<meta name="description" content="Second Description">

... etc. J'ai confirmé que le code fonctionne bien via Firebug (c'est-à-dire que je peux voir que ces deux balises ont été correctement modifiées).

Apparemment, Facebook Share n’ajoute que les balises méta de titre et de description disponibles lors du chargement de la page. Les modifications apportées à ces deux balises après le chargement de la page sont complètement ignorées.

Quelqu'un at-il des idées sur la façon de résoudre ce problème? Autrement dit, forcer Facebook à obtenir les dernières valeurs modifiées après le chargement de la page.

2
user318983

Vous ne pouvez pas, ça ne le supporte pas.

Je dois demander, pourquoi ces calculs doivent se produire uniquement dans l'application flash?

Vous devez naviguer vers une URL qui se rapporte clairement aux métadonnées que vous obtenez à partir de l'application flash. Sinon, comment l’application flash saurait-elle obtenir les valeurs en fonction de l’URL que vous avez tapée?.

Les options sont:

  • calculez sur la page: Lorsque vous servez la page, vous devez effectuer les mêmes calculs sur le serveur et envoyer le titre, etc. sur les métadonnées de la page.
  • envoyer les métadonnées de la chaîne de requête à votre site: Si vous devez réellement conserver le calcul hors du serveur, une autre astuce consiste à définir explicitement les métadonnées dans l'URL sur laquelle les utilisateurs cliquent pour accéder à votre site. Facebook. Lors du traitement de la page, il vous suffit de la recopier dans les sections de métadonnées (n'oubliez pas de coder correctement). Cela est clairement limité en raison des restrictions de taille des URL.
  • envoyez les résultats du calcul dans la chaîne de requête à votre site: si ces calculs ne vous donnent que quelques chiffres utilisés dans les métadonnées, vous pouvez inclure ce paramètre dans la chaîne de requête de l'URL sur laquelle les utilisateurs cliquent retour sur votre site. C'est plus susceptible de ne pas vous donner des problèmes avec la taille des URL.

Pourquoi est-ce voté? C'est faux. Vous POUVEZ - il IS est pris en charge pour ajouter un titre personnalisé, une description et des images à votre part. Je le fais tout le temps. - Dustin Fineout il y a 3 heures

L'opérateur a très clairement indiqué qu'il savait déjà que vous pouviez servir cela depuis une page, mais souhaitait transmettre les valeurs directement à Facebook (et non via la page cible).

En outre, notez que j’ai donné 3 options différentes pour résoudre le problème, l’une d’elles étant ce que vous avez posté comme réponse plus tard. Votre option n’est pas la façon dont le PO essayait de le faire, c’est juste une solution de contournement à cause des restrictions de Facebook.

Enfin, tout comme je l’ai fait, vous devriez mentionner que cette solution particulière est imparfaite, car vous pouvez facilement atteindre la restriction de taille d’URL.

0
eglasius