为什么Facebook会在Android上给我一个空洞的回复?

时间:2013-09-01 12:40:27

标签: javascript android facebook

我继承了一个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存在)而不是第二个(因为响应在某种程度上是空的,即使页面被喜欢)。

遗憾的是,我没有可以测试的其他设备。

我是否忽略了一些明显的明显错误?我能做些什么来挽救它?

1 个答案:

答案 0 :(得分:0)

我明白了。似乎我没有要求必要的权限,因为我认为“喜欢”是基本信息的一部分。我意识到,傻了。

FB.login(function(response) {
  // Truly amazing code goes here
}, { scope : 'user_likes' }); // Scope is important, yo

我不明白,为什么它适用于桌面,但不适用于移动设备,但我现在很高兴它能够正常运行。