我正在尝试使用来自webtechnick的Facebook插件和我的CakePHP 1.3.10应用程序。我按照所有指示进行安装并具备所有功能:
然后,我在我的视图中使用此代码:
echo $this->Facebook->share('link');
echo $this->Facebook->like();
echo $this->Facebook->comments();
但我只收到分享按钮,而不是相似或评论。我错过了任何一步吗?如果我在facebook帮助器 like()函数中回显某些东西,例如它在视图中打印,那么它实际上调用了该函数,但没有生成facbook元素。有任何想法吗?我不知道还有什么可以尝试,我相信我已经按照所有步骤......
---------- UPDATE --------------------------
使用Firebug我看到此脚本错误: FB.provide 不是函数
错误来自的文件是 http://connect.facebook.net/es_ES/all.js ,我认为该插件会调用它。但由于它是在Facebook的服务器上,我能做些什么呢?这是否意味着他们的结局存在问题?我没有看到我能做的更多事情。有任何想法吗?
答案 0 :(得分:1)
看来all.js文件在IE和Firefox中都会出现问题。我正在使用IE8和Firefox 7。
在查看以下内容后... Stack Overflow Answer和Facebook Bug Report我能够解决这两个问题。对我的修复是编辑facebook.php助手并添加以下内容......
IE修补
FB.UIServer.setActiveNode = function(a,b){FB.UIServer._active[a.id]=b;}
Firefox修复
window.FB = null;
FB = null;
完成init()函数
function init($options = array()){
if(FacebookInfo::getConfig('appId')){
$appId = FacebookInfo::getConfig('appId');
$session = json_encode($this->Session->read('FB.Session'));
$init = '<div id="fb-root"></div>';
$init .= $this->Html->scriptBlock(
"
window.fbAsyncInit = function() {
FB.init({
appId : '{$appId}',
session : {$session}, // don't refetch the session when PHP already has it
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
/* IE FIX */
FB.UIServer.setActiveNode = function(a,b){FB.UIServer._active[a.id]=b;}
/**********/
// whenever the user logs in, we refresh the page
FB.Event.subscribe('auth.login', function() {
window.location.reload();
});
};
(function() {
/* FIREFOX FIX */
window.FB = null;
FB = null;
/**********/
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/{$this->locale}/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
",
$options
);
return $init;
}
else {
return "<span class='error'>No Facebook configuration detected. Please add the facebook configuration file to your config folder.</span>";
}
}
有点晚了,但我希望这有助于某人!
答案 1 :(得分:1)
这可能是因为Facebook贬低了FBML。
因此,请在html
代码前使用普通$this->Facebook->html();
代码而不是HEAD
。
这对我有用。顺便说一句,Facebook开发变得很痛苦lol。作为开发者的干杯,我想我们会年轻。 &GT;。&LT;
“2012年1月1日:平台将不再支持FBML。2012年6月1日:FBML应用程序将不再有效。”请在此处阅读更多相关信息:http://developers.facebook.com/docs/reference/fbml/
答案 2 :(得分:1)
将facebook目录放入app / plugins目录,并将facebook.php从facebook目录的config文件夹放入app / config文件夹,我相信你的问题会立即得到解决。
由于
答案 3 :(得分:0)