2013-09-01 70 views
0

我已經繼承了一個Facebook應用程序,該應用程序無法按預期工作100%。我不瞭解以前的開發者的邏輯,但我沒有足夠強大的Facebook API來重寫它。爲什麼Facebook在Android上給我一個空的迴應?

該應用程序有一個窗體,用戶(登錄時)需要回答幾個問題。當他點擊提交時,我們想檢查他是否喜歡該頁面。該表格只會在他提交時提交。

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語句。

我不明白的部分是爲什麼它進入第一個如果(response.data存在)但不是第二個(因爲響應在某種程度上是空的,即使頁面被喜歡)。

不幸的是,我沒有其他設備可以測試。

我可以忽略一些明顯的明顯錯誤嗎?我能做些什麼來挽救它?

回答

0

我想通了。看起來我並沒有要求必要的權限,因爲我認爲「喜歡」是基本信息的一部分。我很愚蠢,我意識到。

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

我不明白,這是爲什麼它在桌面上,但不是在手機上,但我很高興,現在它的工作。

相關問題