2017-03-12 32 views
5

Update 1Facebook Sigin w social JavaScript SDK nie będzie ładować w Chrome czy FF

Zacząłem angular quickstart i tylko dodaje facebook „s javascript, jednak nie ładuje:

<script type="text/javascript" src="//connect.facebook.net/en_US/sdk.js"></script> 

Używam Facebook JavaScript API do tworzenia logowanie w angular 2 aplikacji, ale działa w następujący:

TypeError: FB.login is not a function

index.html (pomijana dla zwięzłość)

<script type="text/javascript" src="//connect.facebook.net/en_US/sdk.js"></script> 

<script> 
    System.import('app').catch(function (err) {console.error(err);}); 
</script> 

zauważyłem scenariusz nie wydaje się załadować poprawnie, następuje z Chrome devtools:

enter image description here

kątowa 2 Komponent

declare const FB: any; 

@Component({ 
    // usual suspects here 
}) 
export class LoginComponent implements OnInit { 
constructor() { 
    FB.init({ 
    appId: 'my-app-id', 
    cookie: false, 
    xfbml: true, 
    version: 'v2.5' 
    });  
} 

ngOnInit(): void {  
    FB.getLoginStatus(response => { 
     .... 
    }); 
} 

onSignin(socialMedia: string): void { 
    FB.login(); // The errant line 
} 
} 

Czy mam zrobić coś takiego? as outlined here

(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.com/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
+0

można potwierdzić, czy można dotrzeć do pliku z przeglądarki? – Pengyy

+0

@Pengyy, skrypt nie zostanie załadowany w chrome lub Firefox. Wydaje mi się, że nigdy nie miałbym okazji tego powiedzieć, ale "działa w Microsoft Edge". Zamierzam zaktualizować moje pytanie. – kmansoor

Odpowiedz

4

Odpowiadając na to z korzyścią dla innych ...

To była wtyczka ghostery, która blokowała (między innymi) "znak społecznościowy".

0

myślę wstawiania biblioteki skryptu FB w głównym html file.Also upewnić się, że skrypt przewidziane przez twórców fb są umieszczane w kodzie, który rozwiąże problem.follow link https://developers.facebook.com/docs/javascript/quickstart

+0

obie twoje sugestie zostały już sprawdzone. – kmansoor

+0

No cóż, w moim przypadku spotkałem się z tym samym problemem w tym czasie i skomentowałem kod FB.login są uruchamiane projektu i po tym usunąć komentarz, a następnie działa dobrze dla mnie spróbuj !!! –

0

Nie uruchamiaj FB.init bezpośrednio, należy zrobić:

declare var window:any; 

a następnie w konstruktora lub metody ngInit użyć FB asynchroniczny Metoda:

window.fbAsyncInit = function() { 
      FB.init({ 
       appId: appID, 
       xfbml: true, 
       version: 'v2.5' 
      }); 
    }; 

    (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.com/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

fbAsyncInit automatycznie uzyskać spust kiedy facebook obciążenia sdk.

Zobacz więcej w Facebook quick start

+0

To było zjawisko, które blokowało ładowanie skryptu. – kmansoor