2013-03-27 14 views
17

Próbuję uruchomić pierwszy przykład z dokumentacji zestawu SDK Facebooka JS. Stworzyłem nową aplikację, utworzyłem pusty dokument o nazwie "facebookTest.html", wkleiłem kod z przykładu i podłączyłem identyfikator aplikacji nowej aplikacji. Kod następująco:"Załadowanie zasobu nie powiodło się" przy użyciu przykładowego kodu Facebooka

<html> 
<head> 
<title>Login with facebook</title> 
<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    // init the FB JS SDK 
    FB.init({ 
     appId  : 'my app ID', // App ID from the App Dashboard 
     status  : true, // check the login status upon init? 
     cookie  : true, // set sessions cookies to allow your server to access the session? 
     xfbml  : true // parse XFBML tags on this page? 
    }); 

    // Additional initialization code such as adding Event Listeners goes here 

    }; 

    // Load the SDK's source Asynchronously 
    // Note that the debug version is being actively developed and might 
    // contain some type checks that are overly strict. 
    // Please report such bugs using the bugs tool. 
    (function(d, debug){ 
    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 = document.location.protocol+"//connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js"; 
    ref.parentNode.insertBefore(js, ref); 
    }(document, /*debug*/ false)); 
</script> 

Kiedy załadować stronę, na konsoli JavaScript otrzymuję następujący komunikat o błędzie:

Failed to load resource

Co robię źle?

EDIT: Kiedy dodać document.location.protocol przed "//connect.facebook.net/...", jak sugeruje here, ekran pozostaje pusty, a konsola zawiera następujące informacje:

GET file://connect.facebook.net/en_US/all.js 

Czy to wszystko to kod ma robić? Czy wciąż się nie udaje?

+0

Sprawdź Adblock! :) – FooBar

Odpowiedz

37

Było kilka rzeczy źle tutaj:

  1. potrzebne do zmiany js.src przypisanie do: js.src="https://connect.facebook.net/en_US/all.js";

  2. Facebook nie obsługuje JS połączeń SDK wykonanych z lokalnego pliku, skrypt musi można uruchomić na pliku z identyfikatorem URI http:// lub https://, zgodnie z this bug report on Facebook. Będę musiał przesłać plik na serwer internetowy, odpowiednio zmienić URL kanwy i ponownie przetestować.

+2

W wyjaśnieniu do wskaźnika 2. Dzieje się tak dlatego, że 'js.src' w kodzie init jest względny dla protokołu. więc jeśli uzyskujesz dostęp do lokalnego pliku. spróbuje uzyskać dostęp do pliku fb sdk przez plik: i błąd –

+0

Tak, stwierdziłem, że mogę przetestować go na lokalnym serwerze sieciowym (np. WAMP), jeśli mam dostęp do pliku jako np. 'localhost/FacebookApp' zamiast' file : // c: \ wamp \ www \ FacebookApp \ index.html'. – sigil

+1

Tak. Dzieje się tak, ponieważ twój js.src może wskazywać na "//connect.facebok ...." jest względny dla protokołu, dlatego jeśli uzyskujesz dostęp do strony ur bez serwera, tzn. Używając 'file: //', więc facebook init próbuje załadować sdk javascript z 'file: //connect.facebook.net ....' co się nie stanie, więc to nie działa Również ... najlepiej jest mieć js.src wskaż "// connect.facebook.net/en_US/all.js", tak aby obsługiwane były nawet żądania http.) W każdym razie ... Nauczyłem się tego dzisiaj, więc pomyślałem, że się nim podzielę –

5

Najpierw trzeba dołączyć http lub https do js.src adresu URL

drugie trzeba hosta HTML plik na serwerze.

0

Przejdź do Facebooka dewelopera i dodaj swoją domenę internetową i uzyskać identyfikator i wklej poniżej:

appId : 'my app ID', // App ID from the App Dashboard 
0

prostu wyłączyć AdBlock to działa na mnie

Powiązane problemy