2016-09-10 7 views
0

Ich versuche einfach einen Beitrag auf Facebook mit Javascript/Typescript zu machen.Facebook SDK funktioniert nicht mit Javascript

Nichts funktioniert jedoch.

Das ist mein Typoskript Code:

(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'}); 
} 

Und mein 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> 

Ich habe den obigen Code aus der Facebook-Entwicklerwebsite.

+0

Kann spezifischer sein? Was funktioniert nicht? –

+0

Ich glaube, dass es ein Pop-Up sein soll, in dem Sie aufgefordert werden, sich anzumelden, aber beim Öffnen des HTML im Browser passiert überhaupt nichts. – user2203633

+0

haben Sie die Browserkonsole überprüft? das ist das erste was du tun musst, immer. – luschn

Antwort

0

Erstens brauchen Sie nicht window zu any zu werfen, können Sie dies tun:

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

Dann sollte diese Arbeit:

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

Wie für den Login, nach the docs Sie fehlt der Teil, der den Fehler behandelt. Die Funktion, die Sie FB.login Pass erhält ein response, mit dem Sie den Status überprüfen:

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'}); 
} 

Jetzt wissen Sie, wenn die Login fehlgeschlagen.

+0

Immer noch nichts, wenn ich auf "Login with Facebook" klicken. – user2203633

+0

Es ist nichts in der Konsole? –