Кнопки «Мне нравится» и # строки в Facebook? - PullRequest
9 голосов
/ 12 августа 2010

Что делает Facebook с кнопками «Мне нравится» в веб-приложении ajax, если они ссылаются на одну и ту же страницу, но с другой строкой?

Считает ли она их похожими на разные страницы?

например, если я получу 4 похожих клика:

mysite.com/articles#story1
mysite.com/articles#story2
mysite.com/articles#story3
mysite.com/articles#story4

, что появится в ленте новостей пользователя

4 people like mysite.com/articles

или

dave likes mysite.com/articles#story1
tom likes mysite.com/articles#story2
ben likes mysite.com/articles#story3
nick likes mysite.com/articles#story4

Есть ли что-то еще, чтобы подумать о FB и # строках?

Ответы [ 3 ]

7 голосов
/ 12 августа 2010

Подобные кнопки Facebook используют метаданные, которые встроены в разметку HTML одной страницы. Теоретически это работало бы, если бы ваш URL создавал разные метаданные при доступе с помощью curl (то есть без JavaScript, что, по моему мнению, невозможно, поскольку часть хеша не видна на стороне сервера, поэтому нет способа воздействовать на значения строки хеша на стороне сервера ).

Сказав это, я бы предположил, что кнопки Facebook Like не ведут себя по-разному для разных хеш-строк. В документации по Facebook (которая в основном отстой) не упоминается об этом, но форумы разработчиков Facebook, кажется, подтверждают это: http://forum.developers.facebook.com/viewtopic.php?pid=240151

Однако еще не все потеряно. Вы можете указать URL кнопки «Мне нравится», поэтому просто установите URL-адрес, который будет оптимизирован для SEO на той же странице: http://developers.facebook.com/docs/reference/plugins/like

ОБНОВЛЕНИЕ - Уточнение из комментариев

Итак, теперь мы знаем, что у вас есть статические версии URL-адресов хеш-строк. Раньше вы, скорее всего, размещали на странице одинаковые кнопки с таким кодом:

XFBML:

<fb:like show_faces="false" width="450"></fb:like>

Вместо этого вы должны указать SEO-версию URL. Например, когда вы находитесь на mysite.com / articles # story4 , код должен выглядеть следующим образом:

XFBML:

<fb:like href="mysite.com/articles/story/4" show_faces="false" width="450"></fb:like>
1 голос
/ 16 сентября 2011

Facebook будет отбрасывать все после хэш-тега.Что вам нужно сделать, это отправить ваш запрос с символом #, кодирующим его в% 23

<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmysite.com%2Farticles%2F%23story1" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:px">
0 голосов
/ 18 августа 2012

Facebook в основном * поддерживает спецификацию сканирования ajax от Google , поэтому, если фрагмент начинается с восклицательного знака, тогда Facebook выполнит следующее преобразование для запроса, чтобы сервер мог получить фрагмент иобслуживать ожидаемый контент.

https://myapp.com/#!/post/2 => https://myapp.com/?_escaped_fragment_=/post/2

(Согласно спецификации Google, пользователь никогда не должен видеть уродливый URL, поэтому яПредположим, что Facebook всегда будет хранить эти URL-адреса в формате «восклицательного знака».)

Предоставление надлежащего содержимого для этих запросов часто бывает нетривиальным.Подробнее здесь .

* Триггер метатега не работает.Я проверил это в 2012/08/18.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...