我真的很困惑。
我正在尝试使用我网站上一些非常简单的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脚本中使用“你的app id”。没有应用程序...只是一个Facebook公司页面...所以当我在网站上放一个Like按钮时,为什么我需要一个App ID?
<script>
window.fbAsyncInit = function() {
FB.init({
appId: 'your app id',
status: true,
cookie: true,
xfbml: true
});
};
对这些问题的任何启示都将不胜感激。
感谢 - 你!
答案 0 :(得分:16)
在拔掉我所有的头发之后回答我自己的问题......
http://developers.facebook.com/docs/guides/web/
“JavaScript SDK要求您使用Facebook注册您的网站以获取应用ID (或appId).appId是您网站的唯一标识符,可确保我们拥有用户和您的网站之间的适当安全级别。以下示例显示了在您拥有appId后如何加载JavaScript SDK:“
http://developers.facebook.com/setup/
该页面/表单的标题是创建应用。我仍然不明白他们为什么不使用更通用的术语。我不是“创建应用程序”,我不认为我的网站是一个应用程序。
答案 1 :(得分: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>
答案 2 :(得分: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重定向到奖励页面,则用户只需剪切该网址即可。你可以设置一个rnd会话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会把你视为二等公民。