javascript - link - ¿Facebook sharer.php ha cambiado para no aceptar más parámetros detallados?
share image on facebook from website (4)
Facebook ya no admite parámetros personalizados en sharer.php
El participante ya no aceptará parámetros personalizados y Facebook extraerá la información que se muestra en la vista previa de la misma manera que aparecería en Facebook como una publicación de las etiquetas meta de OG de la url.
Use diálogo / fuentes en lugar 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
Hemos estado abriendo una ventana emergente para compartir (a través de window.open) con la URL como
https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
y hasta algún punto desconocido en el último mes, todo estaba bien.
Lo que está sucediendo ahora es; aparece el cuadro de diálogo emergente e incluye correctamente el título, la descripción, la imagen y la URL proporcionados por los parámetros de cadena de consulta, pero cuando se envía la publicación, la publicación de pared resultante en Facebook no incluye el título, la descripción y la imagen, aunque todavía enlaza con el correcto URL
¿Alguien sabe si ha habido cambios recientes que de repente podrían haber impedido que funcione?
Anticipando algunas respuestas comunes:
"la URL de sharer.php estaba en desuso": el uso parecía continuar y parecía que el consenso era que se consideraba en gran parte que permanecía - no he visto ninguna indicación específica de que debería haber dejado de funcionar repentinamente - podría haber pasado algo por alto
"Usar SDK de JavaScript / estas metaetiquetas de OG" - no es posible en mi situación específica - solo confía en mí ... Puedo explicar si REALMENTE quieres pero realmente no es relevante.
"Usar el cuadro de diálogo de alimentación": no es adecuado debido a la falta de soporte para publicar con archivos adjuntos en páginas FB
A partir del 18 de julio de 2017, Facebook decidió ignorar los parámetros personalizados establecidos por los usuarios. Esta opción bloquea muchas de las posibilidades que ofrece esta respuesta y también rompe los botones utilizados en varios sitios web.
Los parámetros de quote
aún funcionan.
¿Alguien sabe si ha habido cambios recientes que de repente podrían haber impedido que funcione?
Los parámetros han cambiado. La respuesta actualmente aceptada dice:
Facebook ya no admite parámetros personalizados en
sharer.php
Pero esto no es del todo correcto. Bueno, tal vez no los admiten o respaldan , pero se pueden usar parámetros personalizados si conoce los nombres correctos. Éstas incluyen:
- URL (por supuesto) →
u
- imagen personalizada →
picture
- título personalizado →
title
- presupuesto personalizado →
quote
- descripción personalizada →
description
- título (también conocido como nombre del sitio web) →
caption
Por ejemplo, puede compartir esta misma pregunta con la siguiente URL:
https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2F.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.
¡Intentalo!
Creé una herramienta que facilita compartir URL en Facebook con parámetros personalizados. Puede usarlo para generar su enlace sharer.php
, simplemente presione el botón y copie la URL de la pestaña que se abre.
Reviso su url en uso:
https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
y vea estas diferencias:
- La URL del compartidor no es lo mismo.
- Las cuerdas están en diferente orden. (No sé si esto afecta).
Yo uso esta cadena de 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
En la sección "título" y "resumen", uso la función php urlencode();
Me gusta esto:
<?php echo urlencode($detail->title); ?>
Y funciona bien para mí.
Su problema es causado por la falta de marcadores OpenGraph, como usted dice que no es posible que implemente por alguna razón.
Para ti, la única solución es usar la API PHP de Facebook .
- Primero debe crear la aplicación en su cuenta de Facebook.
Al crear la aplicación, tendrá dos datos clave para su código:
YOUR_APP_ID YOUR_APP_SECRET
Descargue el PHP PHP SDK desde here .
Puede comenzar con este código para compartir contenido desde su sitio:
<?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>
Puede encontrar más ejemplos en el sitio de Desarrolladores de Facebook: