Нужен ли appId для XFBML-версии кнопки «Нравится» на Facebook? - PullRequest
6 голосов
/ 07 апреля 2011

Я действительно запутался.

Я пытаюсь использовать некоторые очень простые плагины Facebook на моем сайте, в частности, базовую кнопку «Нравится».

Я уже знаю, как использовать ограниченную версию с iFrame.

Тем не менее, сейчас я пытаюсь выяснить метод XFBML, и онлайн-документация, похоже, делает много предположений о том, что вы уже знаете, и действительно не хватает рабочих примеров. Например, они показывают вам, как вызывать JavaScript Init, и дают вам одну строку HTML-кода для элемента fb: like ... но я не смог увидеть никаких примеров того, как показать / скрыть лица, установить шрифт по умолчанию и т. Д. как в коде iFrame.

С тех пор я понял, что вам нужно добавить их как атрибуты к элементу, но это благодаря StackOverlfow, а не благодаря документации Facebook, которая просто берет вас в круги.

<fb:like href="http://mydomain.com" show_faces="true" action="recommend" colorscheme="light" width="400" height="35" />

Хорошо, теперь при использовании кода XFBML его высота должна автоматически увеличиваться / уменьшаться в зависимости от того, вошли в систему или нет.

Я не знаю, должен ли я изначально установить высоту на «80» или это происходит автоматически.

И я понятия не имею, что я должен использовать для «идентификатора вашего приложения» в скрипте Init. Там нет приложения ... просто страница компании Facebook ... так зачем мне нужен идентификатор приложения, когда я просто размещаю кнопку «Мне нравится» на веб-сайте?

<script>
window.fbAsyncInit = function() {
  FB.init({
    appId: 'your app id',
    status: true,
    cookie: true,
    xfbml: true
  });
};

Любое просвещение по этим вопросам будет оценено.

Спасибо вам!

Ответы [ 3 ]

16 голосов
/ 07 апреля 2011

Отвечая на мой собственный вопрос, после того, как выдернул все мои волосы ...

http://developers.facebook.com/docs/guides/web/

"JavaScript SDK требует, чтобы вы зарегистрировали свой сайт в Facebookчтобы получить идентификатор приложения (или appId). appId - это уникальный идентификатор вашего сайта, который обеспечивает необходимый уровень безопасности между пользователем и вашим сайтом. В следующем примере показано, как загрузить JavaScriptSDK, когда у вас есть appId: "

http://developers.facebook.com/setup/

Название этой страницы / формы: Создать приложение .Я до сих пор не понимаю, почему они не используют более общую терминологию.Я не «создаю приложение» и не считаю свой веб-сайт приложением.

1 голос
/ 04 июля 2012

У меня нет appId, но я только что получил этот код от подобного генератора кода , и он, кажется, работает в моей локальной среде (которая использует localhost: 8000, но все еще имеет 136 лайков).Когда я нажимаю кнопки, я получаю всплывающее окно входа в Facebook, как и ожидалось.

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<fb:like href="url here (optional)" send="true" width="450" show_faces="true"></fb:like>
0 голосов
/ 27 февраля 2013

вы можете сделать ...

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#" >

...

window.fbAsyncInit = function() {  
FB.init({
  // appId      : 'none', // App ID
  cookie     : true, // enable cookies to allow the server to access the session
  xfbml      : true  // parse XFBML
});

FB.Event.subscribe('edge.create', function(href, widget) {  
            var ss=href;
            if (ss.match(/myWebSite/i)) {
                    alert('You just liked me');
            }
});
};  

(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "https://connect.facebook.net/en_GB/all.js#xfbml=1";
  //js.src = "https://connect.facebook.net/en_GB/all.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

...

<fb:like ref="core" class="fb-like" data-href="http://www.mySite.com" 
data-send="false" data-layout="button_count" 
data-width="50" data-show-faces="false" data-colorscheme="dark"></fb:like>

все вышеперечисленное работает, но, как и вы, и обратите внимание, как Facebook делит реальные лайки с зарегистрированными сайтами Facebook (давая страницу-заставку, #followers, #talking и т. Д.) Из URL-адресов лайков, которых он не знает. (сайт, по крайней мере, получает увеличивающийся счетчик). Это своего рода побеждает цель быть любимым вообще. Я могу ошибаться, но я думаю, что он даже не публикует сообщения о последнем.

это очень плохо, потому что у меня заканчиваются номера телефонов для Facebook:)

Тогда, по крайней мере для меня, есть большая проблема. Если вы собираетесь наградить кого-то за симпатию к вам, вы не можете быть уверены, что он это сделал, потому что это js. Если вы попытаетесь перенаправить JS на страницу вознаграждения, пользователь может просто вставить этот URL. Вы можете установить rnd сеанс var, передать его js и перенаправить js на страницу php, но пользователь тоже может это понять.

Вы не можете (или закомментировали appId) ...

require 'face_sdk/face/src/facebook.php';
$facebook = new Facebook(array(
  'appId' => '',
  'secret' => '',
));
$user = $facebook->getUser();

так что, похоже, нет прямого пути php. Я играл с передачей URL кнопки iframed Like в php, анализируя его с помощью simple_html_dom.php и выясняя, какой из двух основных элементов div имеет класс hidden_elem. Но в конце концов, это просто не стоит того, потому что Facebook будет относиться к вам как к гражданину второго сорта.

...