Имеет Facebook sharer.php изменено, чтобы больше не принимать подробные параметры?
Мы открывали всплывающее окно общего доступа (через 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.
Кто-нибудь знает, были ли недавние изменения, которые могли бы внезапно остановить эту работу?
Упреждение некоторых распространенных ответов:
"sharer.php URL-адрес был устаревший" - использование, казалось, продолжить и он казалось, по общему мнению, он был во многом считаются остаться - я не видел никаких конкретных признаков того, что она а теперь вдруг перестали работать - может что-то упустил
" Используйте JavaScript SDK/эти OG мета-теги" - невозможно в моей конкретной ситуации - просто поверьте мне... Я могу объяснить, если вы ДЕЙСТВИТЕЛЬНО хотите, но это действительно не имеет отношения к делу.
" Используйте диалоговое окно ленты" - не подходит из-за отсутствия поддержки публикации с вложениями на страницах FB
4 answers
Facebook больше не поддерживает пользовательские параметры в sharer.php
Пользователь больше не будет принимать пользовательские параметры, и facebook будет извлеките информацию, которая отображается в предварительном просмотре, таким же образом таким образом, он будет отображаться на facebook в виде сообщения с 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
Начиная с 18 июля 2017 года Facebook решил игнорировать пользовательские параметры, установленные пользователями. Этот выбор блокирует многие возможности, предлагаемые этим ответом, а также ломает кнопки, используемые на нескольких веб-сайтах.
Параметры quote
все еще работают.
Кто-нибудь знает, были ли недавние изменения, которые могли бы внезапно остановить эту работу?
Параметры изменились. Принятый в настоящее время ответ состояния:
Facebook больше не поддерживает пользовательские параметры в
sharer.php
Но это не совсем правильно. Ну, может быть, они не поддерживают или одобряют их, но пользовательские параметры можно использовать , если вы знаете правильные имена. К ним относятся:
- URL (конечно) →
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 API Facebook.
- Сначала вы должны создать приложение в своей учетной записи facebook.
-
При создании приложения у вас будут две ключевые данные для вашего кода:
YOUR_APP_ID YOUR_APP_SECRET
Загрузите PHP SDK для Facebook с здесь.
-
Вы можете начать с этого кода для обмена контентом со своего сайта:
<?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-адрес общего доступа не совпадает.
- Строки расположены в другом порядке. (Не знаю, влияет ли это).
Я использую эту строку 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
В разделе "заголовок" и "сводка" я использую функцию php urlencode();
следующим образом:
<?php echo urlencode($detail->title); ?>
И прекрасно работает для меня.