2011-04-07 40 views
6

我真的很困惑。我是否需要Facebook Like按钮的XFBML版本的appId?

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

我已经知道如何使用iFrame的限制版本。

但是,现在我试图找出XFBML方法,并且在线文档似乎对您已知的很多假设以及工作示例上的确很短。例如,它们向您展示了如何调用JavaScript Init并为您提供元素fb的单行HTML代码:like ...但我看不到任何示例如何显示/隐藏面,设置默认字体等。就像在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按钮时,为什么还需要一个应用程序ID?

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

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

谢谢你!

回答

16

回答我的问题,拿出我的头发后...

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

“中的JavaScript SDK要求您与Facebook注册你的网站获得一个App ID(或APPID )。appId是您网站的唯一标识符,可确保我们在用户和您的网站之间具有适当的安全级别。以下示例显示了如何在您拥有应用程序ID时加载JavaScript SDK:“

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

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

+18

是的,Facebook的文档是彻头彻尾的可怕的。 – billmalarky 2011-11-01 17:45:29

+2

离开'appId = 3990840334890'似乎工作得很好 – 2012-11-03 23:09:45

+0

@PeterEhrlich我想你不会在提供appId时丢失统计信息/见解。似乎也适用于我。带有评论插件的事件... – benzkji 2016-07-01 09:07:52

1

我没有一个应用程序,但刚刚从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注册的网站(给人一种spash页面,#followers,#talking等),从喜欢的网址,它不知道。 (该网站至少有一个增长的计数器)。它有点击败了被喜欢的目的。我可能是错的,但我认为它甚至不会发布有关后者的消息。

这太糟糕了,因为我跑出来的电话号码为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方式。我正在将iframed Like按钮url传递给php,用simple_html_dom.php解析它,并找出两个主div中的哪一个具有'hidden_​​elem'类。但最终,这不值得,因为Facebook会把你当成二等公民。