Мы открываем всплывающее окно совместного доступа (через window.open) с URL-адресом, подобным
https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
и до некоторой неизвестной точки за последний месяц или около того все было в порядке.
Что происходит сейчас; появляется диалоговое окно всплывающего окна и правильно включает в себя заголовок, описание, изображение и URL-адрес, предоставленные параметрами строки запроса, но когда сообщение отправлено, в результирующем сообщении на стене на Facebook отсутствует заголовок, описание и изображение, хотя оно все еще связано с правильный URL.
Кто-нибудь знает, были ли недавние изменения, которые могли бы внезапно остановить это от работы?
Предотвращение некоторых распространенных ответов:
«URL-адрес sharer.php устарел» – использование, казалось, продолжалось, и, похоже, консенсус заключался в том, что его в значительной степени считали похожим на то, что я не видел никаких конкретных указаний на то, что он должен был внезапно прекратить работу – возможно, что-то пропустил
«Использовать JavaScript SDK / эти метатеги OG» – не возможно в моей конкретной ситуации – просто поверьте мне … Я могу объяснить, хотите ли вы ДЕЙСТВИТЕЛЬНО, но это действительно не актуально.
«Использовать диалог подачи» – не подходит из-за отсутствия поддержки для публикации с прикрепленными файлами на страницах FB
sharer.php
Сплиттер больше не будет принимать пользовательские параметры, и facebook вытащит информацию, отображаемую в предварительном просмотре, так же, как она появится на facebook, как сообщение из метатегов URL-адреса url.
Использовать диалог / каналы вместо 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
Официальный ответ команды fb
Параметры quote
все еще работают.
Кто-нибудь знает, были ли недавние изменения, которые могли бы внезапно остановить это от работы?
Параметры изменены. В принятом в настоящее время ответе говорится:
Facebook больше не поддерживает пользовательские параметры в
sharer.php
Но это не совсем правильно. Возможно, они не поддерживают или не поддерживают их, но пользовательские параметры могут использоваться, если вы знаете правильные имена. К ним относятся:
u
picture
title
quote
description
caption
Например, вы можете поделиться этим вопросом со следующим URL-адресом:
http://img.ruphp.com/javascript/login.php&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.
Я создал инструмент, который упрощает обмен URL-адресами на Facebook с настраиваемыми параметрами. Вы можете использовать его для создания ссылки sharer.php
, просто нажмите кнопку и скопируйте URL-адрес с вкладки, которая открывается.
Ваша проблема вызвана отсутствием маркеров OpenGraph, поскольку вы говорите, что по какой-то причине вы не реализуете.
Для вас единственным решением является использование PHP Facebook API .
При создании приложения у вас будет два ключевых данных для вашего кода:
YOUR_APP_ID YOUR_APP_SECRET
Скачайте PHP PHP SDK отсюда .
Вы можете начать с этого кода для совместного использования контента с вашего сайта:
<?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>
Вы можете найти больше примеров на сайте разработчиков Facebook:
Я просматриваю ваш url в использовании:
https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
и посмотрите на это:
Я использую эту строку URL:
http://img.ruphp.com/javascript/login.php&p[title]=Title&p[summary]=Summary
В разделе «title» и «summary» я использую функцию php urlencode();
как это:
<?php echo urlencode($detail->title); ?>
И отлично работает для меня.