Как действие не отображается на стене пользователя - PullRequest
2 голосов
/ 11 февраля 2012

Я потратил несколько дней, пытаясь решить эту проблему без успеха. Проблема в том, что когда пользователь нажимает кнопку «Мне нравится», это не означает, что ему что-то нравится на своей стене. Хотя код корректно работает на моей тестовой установке на локальном хосте, он не работает в рабочей среде.

Мой клиент использует плагин галереи изображений для WordPress вместе с плагином лайтбокса, известным как FancyBox, для отображения больших версий изображений, когда пользователь нажимает на миниатюру. Он попросил меня добавить кнопку в стиле «фейсбук» к каждой фантазии.

Поскольку fanyboxes генерируются динамически, я генерирую новую кнопку like iframe всякий раз, когда отображается fancybox. URL-адрес, используемый кнопкой iframe, уникален для изображения, на которое нажимает пользователь. Код добавляет & photo = / location / of / photo.jpg к URL галереи. Затем весь пользовательский URL-адрес передается через encodeURIComponent () и передается в iframe.

Вот фрагмент кода, использованный для генерации iframe

var currentURL = document.URL,  
    currentIMG = $("#fancybox-img").attr("src").split("http://www.downsplash.com").pop();  
if (currentURL.match("&photo=")) {  
    var currentURL = currentURL.split("&photo=").shift();
};
var thisURL = encodeURIComponent(currentURL + "&photo=" + currentIMG);
<span id="fancybox-title-over">
    <div id="facebook-like" style="display:inline-block;">
        <iframe src="//www.facebook.com/plugins/like.php?href=" + thisURL + "&amp;send=false&amp;layout=button_count&amp;width=80&amp;show_faces=true&amp;action=like&amp;colorscheme=dark&amp;font&amp;height=21&amp;appId=314592468583405" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:80px; height:21px;" allowTransparency="true"></iframe>  
    </div>
</span>

Вот ссылка на код, работающий в производстве.

Код кнопки «Мне нравится», кажется, работает без сбоев, он позволяет вам любить и отличать фотографии. Единственная проблема заключается в том, что когда фотография нравится, на стене пользователя ничего не появляется.

Примечания:

  1. Все работает правильно, когда используется только базовый URL без custom & photo = / location / of / photo.jpg
  2. При тестировании этого кода на локальном хосте он ОТПРАВЛЯЕТСЯ на Facebook.

Я не уверен, почему эти лайки не отображаются на стене пользователя в Facebook. У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2012

Как указывает Heera , рабочий код работает, но когда Facebook публикует на стене пользователя, он публикует URL портфолио, НЕ включая & photo = / location / of / photo.jpg. Это происходит потому, что в заголовке есть метатег Open Graph, который передает Facebook URL-адрес портфолио, и ничего более.

<meta property="og:url" content="http://www.downsplash.com/?portfolio=portraits">

Мне не удалось увидеть пост на моей стене, так как мне уже понравился URL-адрес портфолио. Как оказалось, этот тег открытого графика автоматически добавляется в заголовок с помощью плагинов «Simple Facebook Connect» и «Tweet, Like, Google+ и Share». Это также объясняет, почему мой код работает на моем тестовом сайте localhost, поскольку Facebook не может сканировать localhost на наличие тегов открытого графика, когда мне понравилась фотография.

Спасибо за помощь!

Edit:

После того, как я отключил плагины и убедился, что мои теги открытого графика правильно отображаются в формате html, у меня возникла проблема, связанная с кэшированием тегами открытого графика для данного URL-адреса в Facebook. Это привело к тому, что предыдущее неправильное перенаправление URL продолжалось. Я решил эту проблему, посетив Отладчик открытого графика Facebook и введя URL. Это заставляет Facebook обновлять кэш открытых тегов графика для страницы.

...