6

我真的很困惑。

我正在尝试在我的网站上使用一些非常简单的 Facebook 插件,特别是基本的“喜欢”按钮。

我已经知道如何在 iFrame 中使用受限版本。

但是,现在我正在尝试找出 XFBML 方法,并且在线文档似乎对您已经知道的内容做出了很多假设,并且在工作示例方面确实很短。例如,他们向您展示了如何调用 JavaScript Init 并为您提供元素 fb:like... 的单行 HTML 代码,但我看不到任何有关如何显示/隐藏面孔、设置默认字体等的示例. 就像在 iFrame 代码中一样。

从那以后,我发现您需要将它们作为属性添加到元素中,但这要归功于 StackOverlfow,而不是感谢 Facebook 文档,它简单地将您带入圈子。

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

好的,所以现在使用 XFBML 代码时,它的高度应该根据我假设的是否登录自动扩展/收缩。

我不知道我是否应该最初将高度设置为“80”,或者这是否会自动发生。

而且我不知道在初始化脚本中我应该为“你的应用程序 ID”使用什么。没有应用程序......只有一个 Facebook 公司页面......那么当我只是在网站上放置一个“赞”按钮时,为什么我需要一个应用程序 ID?

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

对这些问题的任何启示将不胜感激。

谢谢!

4

3 回答 3

16

在拔掉我所有的头发后回答我自己的问题......

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

“JavaScript SDK 要求您向 Facebook 注册您的网站以获取 App ID(或 appId)。appId 是您网站的唯一标识符,可确保我们在用户和您的网站之间设置适当的安全级别。以下示例显示了在您拥有 appId 后如何加载 JavaScript SDK:"

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

该页面/表单的标题是Create an App。我仍然不明白为什么他们不使用更通用的术语。我不是在“创建应用程序”,我也不认为我的网站是一个应用程序。

于 2011-04-07T01:22:06.040 回答
1

我没有 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>
于 2012-07-03T21:04:03.167 回答
0

你可以做...

<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 重定向到奖励页面,用户只需剪切粘贴该网址即可。您可以设置一个 rnd session var,将其传递给 js,然后使用它将 js 重定向到一个 php 页面,但用户也可以弄清楚这一点。

您似乎无法(或注释掉 appId)...

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

所以似乎没有直接的php方式。我正在尝试将 iframed Like 按钮 url 传递给 php,用 simple_html_dom.php 解析它,并找到两个主要 div 中的哪一个具有“hidden_​​elem”类。但最终,这并不值得,因为 Facebook 会将您视为二等公民。

于 2013-02-26T22:33:35.917 回答