我继承了一个 Facebook 应用程序,它不能按预期 100% 工作。不明白之前开发者的逻辑,但是我Facebook API不够强,无法重写。
该应用程序有一个表单,用户(登录时)需要在其中回答几个问题。当他点击提交时,我们想检查他是否喜欢这个页面。只有在他这样做的情况下才会提交表格。
window.fbAsyncInit = function() {
FB.init({
appId : '[myappid]',
channelUrl : '//www.myurl.com/channel.aspx',
status : true,
cookie : true,
xfbml : true
});
};
$("form input[type='submit']").on("click", function(e) {
e.preventDefault();
setTimeout(function() {
FB.api('/me/likes/MY-PAGE-ID',function(response) {
if(response.data) {
alert(response.data); // I get this (empty) alert
if(!isEmpty(response.data)) {
alert('all ok'); // I never get this :(
//$("form").submit();
} else {
alert("You must \"Like\" the page."); // Every time
}
}
});
}, 1000);
// Unrelated code edited out - end brackets may not match 100%
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
现在,在桌面上,这可以按预期工作。但是,在 Android 上却没有。它确实输入了第一个if(response.data) {
但以下应该返回数据的警报框,返回空。因此它永远不会进入下面的 if 语句。
我不明白的部分是为什么它进入第一个 if ( response.data
exists) 而不是第二个(因为响应在某种程度上是空的,即使页面被喜欢)。
遗憾的是,我没有其他设备可以测试。
我是否忽略了一些明显的错误?我能做些什么来挽救它?