2016-09-10 102 views
0

我試圖簡單地使用JavaScript/Typescript發佈到Facebook。Facebook SDK不能與Javascript一起工作

但是沒有任何工作。

這是我的打字稿代碼:

(window as any). //couldn't get code to compile without this... 

window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'MY API KEY', 
     xfbml: true, 
     version: 'v2.7' 
    }); 
}; 

(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

declare var FB:any; 
// Only works after `FB.init` is called 
function myFacebookLogin() { 
    FB.login(function(){ 
     // Note: The call will only work if you accept the permission request 
     FB.api('/me/feed', 'post', {message: 'Hello, world!'}); 
    }, {scope: 'publish_actions'}); 
} 

而我的HTML:

<script src="./js/main.js"></script>  

<div id="fb-root"></div> 

<button onclick="myFacebookLogin()">Login with Facebook</button>  
<div id="status"> 
</div>  
</body> 
</div> 
</html> 

我從Facebook的開發者網站上面的代碼。

+0

可以更具體嗎?什麼不工作? –

+0

我相信這是一個彈出窗口要求您登錄,但在瀏覽器中打開html時根本沒有任何反應。 – user2203633

+0

你檢查過瀏覽器控制檯嗎?這是你需要做的第一件事,總是。 – luschn

回答

0

首先,你不需要投windowany,你可以這樣做:

interface Window { 
    fbAsyncInit:() => void; 
} 

那麼這應該工作:

window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'MY API KEY', 
     xfbml: true, 
     version: 'v2.7' 
    }); 
}; 

至於登錄,根據the docs你缺少處理錯誤的部分。您傳遞給FB.login的函數接收response與您可以檢查狀態:

function myFacebookLogin() { 
    FB.login(function(response) { 
     if (response.authResponse) { 
      FB.api('/me/feed', 'post', { 
       message: 'Hello, world!' 
      }); 
     } else { 
      console.log('User cancelled login or did not fully authorize.'); 
     } 
    }, {scope: 'publish_actions'}); 
} 

現在,你就會知道,如果登錄失敗。

+0

當我點擊「與Facebook登錄」仍然沒有得到什麼。 – user2203633

+0

控制檯中沒有任何東西? –

相關問題