我有这个简单的Facebook应用程序。它使用jQuery,并根据Facebook自己的规范和示例代码制作。该应用仅适用于喜欢此页面的访问者。
我已经成功用PHP构建它,但由于其他原因,我需要用Javascript代替它。但是,“has-user-likes-page”功能并没有触发,我尝试了十几个这样的解决方案:event is not fired after clicking facebook like button?
现在,Facebook文档建议:https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe
我的代码中最相关的部分可能是这样的:
....
<body>
<div id="fb-root"><iframe id="contentIframe" scrolling="no"></iframe></div>
<script language="javascript">
$(document).ready(function() {
$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_UK/all.js', function(){
FB.init({
appId: '247171102105...',
channelUrl: 'https://facebook.****.com/customer1/test/channel.html',
});
FB.Event.subscribe('edge.create', function(href, widget) {
alert('You liked the URL: ' + href);
});
FB.getLoginStatus(updateStatusCallback);
});
});
function updateStatusCallback() {
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
document.getElementById("contentIframe").src = "kalender.php?userID="+response.id+"&userName="+response.name+"&email="+response.email;
//alert(JSON.stringify(response, null, 4));
});
} else {
document.getElementById("contentIframe").src = "fallback.php";
}
}, {scope:'email,publish_stream,user_photos'});
FB.Canvas.setAutoGrow();
}
</script>
....
你有什么线索,为什么警告命令永远不会被解雇?
答案 0 :(得分:0)
经过一个漫长的夜晚,我找到了解决方案。我结合了PHP和jQuery API,以便PHP部分检查。 jQuery处理其他一切 - 权限,转发等。它不是很优雅,但我找不到其他方法。
这位于文件顶部:
$facebook = new Facebook(array(
'appId' => '247171102105***',
'secret' => '************************',
));
$signed_request = $facebook->getSignedRequest();
$like_status = $signed_request["page"]["liked"];
if ($like_status == 1) {
$url = "kalender";
} else {
$url = "userDoesntLike";
}
在Javascript-part中:
function updateStatusCallback() {
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
document.getElementById("contentIframe").src = "<?=$url;?>.php?userID="+response.id+"&userName="+response.name+"&email="+response.email;
//alert(JSON.stringify(response, null, 4));
});
} else {
document.getElementById("contentIframe").src = "fallback.php";
}
}, {scope:'email,publish_stream,user_photos'});
FB.Canvas.setAutoGrow();