Nous avons ouvert une fenêtre contextuelle de partage (via window.open) avec l’URL suivante:
https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
et jusqu’à un moment inconnu du mois dernier, tout allait bien.
Ce qui se passe maintenant est; la boîte de dialogue contextuelle apparaît et inclut correctement le titre, la description, l'image et l'URL fournis par les paramètres de la chaîne de requête, mais lorsque la publication est soumise, la publication murale résultante sur Facebook ne contient pas le titre, la description et l'image, bien qu'elle soit toujours liée au message. URL correcte.
Est-ce que quelqu'un sait s'il y a eu des changements récents qui auraient pu empêcher soudainement que cela fonctionne?
Prévention de certaines réponses communes:
"l'URL de sharer.php était obsolète" - l'utilisation semblait se poursuivre et il semblerait que le consensus se dégageait: il était en grande partie considéré comme persistant - je n'ai vu aucune indication spécifique indiquant qu'il aurait dû cesser soudainement de fonctionner - aurait pu manquer quelque chose
"Utiliser JavaScript SDK/ces balises méta OG" - pas possible dans ma situation spécifique - faites-moi confiance ... je peux vous expliquer si vous voulez VRAIMENT mais ce n'est vraiment pas pertinent.
"Utiliser la boîte de dialogue de fil" - ne convient pas en raison d'un manque de support pour la publication de pièces jointes sur des pages FB
sharer.php
Le partageeur n'acceptera plus les paramètres personnalisés et Facebook extraira les informations affichées dans l'aperçu de la même manière que si elles étaient affichées sur Facebook sous forme de publication à partir des méta-tags d'URL OG.
tilisez dialog/feeds au lieu de sharer.php
https://www.facebook.com/dialog/feed?
app_id=145634995501895
&display=popup&caption=An%20example%20caption
&link=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fdialogs%2F
&redirect_uri=https://developers.facebook.com/tools/Explorer
quote
et hashtag
fonctionnent à partir de décembre 2018.Est-ce que quelqu'un sait s'il y a eu des changements récents qui auraient pu empêcher soudainement que cela fonctionne?
Les paramètres ont changé. La réponse actuellement acceptée indique:
Facebook ne prend plus en charge les paramètres personnalisés dans
sharer.php
Mais ceci n’est pas tout à fait correct . Eh bien, peut-être ne le supportent-ils pas ou approuvez , mais des paramètres personnalisés peuvent être utilisés si vous connaissez les noms corrects. Ceux-ci inclus:
u
picture
title
quote
description
caption
Par exemple, vous pouvez partager cette question avec l'URL suivante:
https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fstackoverflow.com%2Fq%2F20956229%2F1101509&picture=http%3A%2F%2Fwww.applezein.net%2Fwordpress%2Fwp-content%2Fuploads%2F2015%2F03%2Ffacebook-logo.jpg&title=A+Nice+question+about+Facebook"e=Does+anyone+know+if+there+have+been+recent+changes+which+could+have+suddenly+stopped+this+from+working%3F&description=Apparently%2C+the+accepted+answer+is+not+correct.
J'ai construit n outil qui facilite le partage des URL sur Facebook avec des paramètres personnalisés. Vous pouvez l’utiliser pour générer votre lien sharer.php
, il vous suffit d’appuyer sur le bouton et de copier l’URL de l’onglet qui s’ouvre.
Votre problème est dû au manque de marqueurs OpenGraph, car vous dites qu'il n'est pas possible de l'implémenter pour une raison quelconque.
Pour vous, la seule solution consiste à utiliser l'API Facebook de Facebook .
Lors de la création de l'application, vous aurez deux données clés pour votre code:
YOUR_APP_ID
YOUR_APP_SECRET
Téléchargez le SDK Facebook PHP à partir de ici .
Vous pouvez commencer avec ce code pour partager le contenu de votre site:
<?php
// Remember to copy files from the SDK's src/ directory to a
// directory in your application on the server, such as php-sdk/
require_once('php-sdk/facebook.php');
$config = array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
'allowSignedRequest' => false // optional but should be set to false for non-canvas apps
);
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
?>
<html>
<head></head>
<body>
<?php
if($user_id) {
// We have a user ID, so probably a logged in user.
// If not, we'll get an exception, which we handle below.
try {
$ret_obj = $facebook->api('/me/feed', 'POST',
array(
'link' => 'www.example.com',
'message' => 'Posting with the PHP SDK!'
));
echo '<pre>Post ID: ' . $ret_obj['id'] . '</pre>';
// Give the user a logout link
echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>';
} catch(FacebookApiException $e) {
// If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
$login_url = $facebook->getLoginUrl( array(
'scope' => 'publish_stream'
));
echo 'Please <a href="' . $login_url . '">login.</a>';
error_log($e->getType());
error_log($e->getMessage());
}
} else {
// No user, so print a link for the user to login
// To post to a user's wall, we need publish_stream permission
// We'll use the current URL as the redirect_uri, so we don't
// need to specify it here.
$login_url = $facebook->getLoginUrl( array( 'scope' => 'publish_stream' ) );
echo 'Please <a href="' . $login_url . '">login.</a>';
}
?>
</body>
</html>
Vous pouvez trouver plus d'exemples sur le site Facebook des développeurs:
Je passe en revue votre URL en cours d'utilisation:
https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
et voir ces différences:
J'utilise cette chaîne d'URL:
http://www.facebook.com/sharer.php?s=100&p[url]=http://www.example.com/&p[images][0]=/images/image.jpg&p[title]=Title&p[summary]=Summary
Dans les sections "title" et "summary", j'utilise la fonction php urlencode();
comme ceci:
<?php echo urlencode($detail->title); ?>
Et fonctionne bien pour moi.