2016-09-10 3 views
0

Я пытаюсь просто сделать сообщение в facebook с помощью Javascript/Typcript.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

Во-первых, вам не нужно бросить window к any, вы можете сделать это:

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

В консоли ничего нет? –

Смежные вопросы