我需要为Facebook Like按钮的XFBML版本创建一个appId吗?

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”,或者是否会自动发生。

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

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

任何关于这些问题的启示都将不胜感激。
谢谢!
3个回答

15

在我自己抓狂之后,我找到了答案……

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

"JavaScript SDK 要求您向 Facebook 注册并获取应用标识符(或 appId)以便使用。appId 是您的网站的唯一标识符,确保我们在用户和您的网站之间具有正确的安全级别。以下示例显示了如何加载 JavaScript SDK 一旦您拥有自己的 appId:"

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

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


2
省略 appId=3990840334890 看起来工作得很好。 - Peter Ehrlich
@PeterEhrlich 如果没有提供appId,你可能会错过统计数据/见解。这对我也有效。即使使用评论插件... - benzkji

1

我没有appId,但是刚从like code generator得到了这个代码,在我的本地环境中似乎可以工作(使用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

你可以做...

<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注册网站(提供闪屏页面、#关注者、#谈论等)以及它不知道的“赞”的URL分开。(至少该网站获得了一个递增的计数器)。这有点违背了被“赞”的目的。我可能错了,但我认为它甚至不会发布有关后者的消息。

这太糟糕了,因为我的Facebook电话号码快用完了 :)

对我来说,还有一个更大的问题。如果你要奖励某人喜欢你,你不能确定他们是否真的喜欢你,因为这是js。如果你尝试js重定向到奖励页面,用户可以剪切粘贴该url。你可以设置一个rnd会话变量,将其传递给js,并将js重定向到一个带有该变量的php页面,但用户也可以弄清楚这一点。

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

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

所以似乎没有直接的 PHP 方法。我试着将 iframe 的 Like 按钮 URL 传递给 PHP,使用 simple_html_dom.php 进行解析,并找到两个主要 div 中哪一个具有“hidden_elem”类。但最终,这并不值得,因为 Facebook 会把你当作二等公民。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接