3

這將成爲初學者的一個問題,就像你想要遇到的開始。使用Facebook的JavaScript SDK

我已經做了以前的程序與Facebook,但不能直接作爲網絡編程 - 所以,我知道我周圍的圖形API的方式和東西一般是如何工作的,但我沒有任何經驗做網絡編程和我米略輸於如何從Facebook'sdocumentation得到了具有工作網頁,讓我登錄(我們的目標是隻爲HTML/JavaScript作爲可能的平淡,但允許圖像的上傳和發佈環節,這樣在牆壁上使用publish_stream權限)。

下面的代碼我有貫通進入到目前爲止什麼Facebook已經告訴我這樣做(我從添加的少量看過HTML少量前現在):

<!DOCTYPE html> 
<html> 
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 
<head> 
    The title of the document (test text) 
</head> 
<body> 
<div id="fb-root"></div> 
<script> 
window.fbAsyncInit = function() { 
// init the Facebook JavaScript SDK 
    FB.init({ 
     appId  : 'EDITED OUT FOR PRIVACY BUT IS VALID IN MY CODE', 
     channelUrl : null, 
     status  : true, 
     cookie  : false, 
     xfbml  : false 
    }); 

    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      // connected 
     } else if (response.status === 'not_authorized') { 
      // not authorized 
      login(); 
     } else { 
      // not_logged_in 
      login(); 
     } 
    }); 
}; 

function login() { 
    FB.login(function(response) { 
     if (response.authResponse) { 
      // connected 
      testAPI(); 
     } else { 
      // cancelled 
     } 
    }); 
} 

function testAPI() { 
    console.log('Welcome! Fetching your information... '); 
    FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
    }); 
} 

(function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
}(document)); 
</script> 
</body> 
</html> 

當我將其保存爲.html文件並將其放入Firefox中,不會顯示任何內容(除非我在</body>之前鍵入了一些hello世界文本)。我已經研究瞭如何讓事情運行的JavaScript/HTML教程,但無濟於事。

我知道它在先前鏈接的先決條件部分中說過(我會再次鏈接,但我在這裏太新了,而且stackoverflow不會讓我)「你需要某個地方讓你的主機在線HTML文件。「它也引用了Heroku,但是我可以找到的任何資源都需要我進行應用程序託管,而我不明白爲什麼(這只是爲了測試此功能),我需要首先在線託管它,而不僅僅是將它放到我的瀏覽器中(或從C/C++調用ShellExecute以使其運行)。

[編輯:]感謝您的幫助迄今爲止大家,我只是希望我沒有佔用時間錯別字到目前爲止,而不是讓你樂於助人的人來找到問題的根源的。

+0

這是您複製確切的代碼?看起來你錯過了testAPI()函數的右括號'}'。 –

+0

謝謝!編輯並修復。但我仍然有同樣的問題。空白頁仍然存在。所有的 – counterfeitname

+0

首先,檢查你的彈出窗口攔截器設置 - 因爲您呼叫的FB.login(它用這樣的方式試圖打開一個彈出),無需任何用戶交互,很可能受阻得到大多數瀏覽器的默認攔截器配置。 FB.login打開彈出窗口應該在一般情況下只用於明確的用戶交互,f.e點擊某個按鈕。順便說一下,這是正確的文檔頁面上。 – CBroe

回答

8

原因的頁是空白是因爲,沒有顯示HTML是爲了示出。示例的要點是演示登錄和API調用。

如果您登錄已經,那麼你將看不到任何東西作爲

FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      // connected 
         // <----- no calls 
     } else if (response.status === 'not_authorized') { 
      // not authorized 
      login(); 
     } else { 
      // not_logged_in 
      login(); 
     } 
    }); 
}; 

如此表示,如果你想知道,如果它工作時,你已經登錄,請嘗試將testAPI()這裏

if (response.status === 'connected') { 
    // connected 
    testAPI(); // <--------------- 
} else if (response.status === 'not_authorized') { 
+0

謝謝,這有助於很多!希望我不會太新,無法登上! – counterfeitname

+0

@phwd爲連接用戶如何獲取發佈權限? – anam