Мы открываем всплывающее окно совместного доступа (через 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 в качестве сообщения из URL-адреса OG meta теги.
Используйте диалог/каналы вместо 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
и hashtag
работают с декабря 2018 года.Кто-нибудь знает, были ли недавние изменения, которые могли бы внезапно помешать этому работать?
Параметры изменились. В настоящее время принятый ответ гласит:
Facebook больше не поддерживает пользовательские параметры в
sharer.php
Но это не совсем правильно. Ну, может быть, они не поддерживают или не одобряют их, но можно использовать пользовательские параметры, если вы знаете правильные имена. Они включают:
u
picture
title
quote
description
caption
Например, вы можете поделиться этим вопросом со следующим URL:
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.
Я создал инструмент, который облегчает обмен URL-адресами на Facebook с пользовательскими параметрами. Вы можете использовать его для генерации ссылки на sharer.php
, просто нажмите кнопку и скопируйте URL-адрес из открывшейся вкладки.
Ваша проблема вызвана отсутствием маркеров OpenGraph, поскольку вы говорите, что по какой-то причине вы не реализуете.
Для вас единственным решением является использование PHP Facebook API.
При создании приложения у вас будет два ключевых данных для вашего кода:
YOUR_APP_ID
YOUR_APP_SECRET
Загрузите PHP SDK от здесь.
Вы можете начать с этого кода для совместного использования контента с вашего сайта:
<?php
// Remember to copy files from the SDK 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 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://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
В разделе "title" и "summary" я использую функцию php urlencode();
следующим образом:
<?php echo urlencode($detail->title); ?>
И отлично работает для меня.