2010-04-27 15 views
7

Sto cercando di implementare Facebook Connect su un sito Web. Sto cercando di lavorare con Javascript SDK di Facebok. Sono nuovo ad esso e sfortunatamente la maggior parte dei collegamenti forniti in Facebook WIKI non sono aggiornati ... Restituzione 404 non trovata. Comunque ho aggiunto questo codice prima della desinenza </body>:Errore chiave API in Facebook Connect (sdk javascript)

<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script> 
<div id="fb-root"></div> 
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"> </script> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({ 
    appId : '12344', // my real app id is here 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : false // parse XFBML 
    }); 

    FB.login(function(response) { 
    if (response.session) { 
    if (response.perms) { 
     alert('user is logged in and granted some permissions'); 
     // user is logged in and granted some permissions. 
     // perms is a comma separated list of granted permissions 
    } else { 
     alert('user is logged in, but did not grant any permissions'); 
     // user is logged in, but did not grant any permissions 
    } 
    } else { 
     alert('user is not logged in'); 
    // user is not logged in 
    } 
}, {perms:'email'}); 
</script> 

e ho un pulsante di accesso in un altro posto (molto prima gli script di cui sopra), nella stessa pagina visualizzata con:

<fb:login-button v="2">Connect with Facebook</fb:login-button> 

Questo pulsante esegue il rendering come un normale pulsante fb connect e facendo clic apre una nuova finestra popup come dovrebbe normalmente. Il problema è che mostra l'errore 'chiave non valida api specificata'. Controllando la barra degli indirizzi del popup, vedo che api_key = undefined è passato ad esso :(

Qualche idea su questo? Sto cercando di risolvere questo problema per le ultime 5 ore ora ... Per favore aiutami a capire perché API corretta chiave non viene passato finestra pop-up.

Grazie in anticipo.

risposta

4

che sto facendo la stessa cosa, e ho trovato un esempio che è molto semplice da implementare e capire (qui uso thay jQuery, ma si può fare lo stesso senza librerie):

<body> 
    <div> 
    <button id="login">Login</button> 
    <button id="disconnect">Disconnect</button> 
    </div> 
    <div id="user-info" style="display: none;"></div> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

    <div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <script> 
    // initialize the library with the API key 
    FB.init({ appId : '12344' }); 

    // fetch the status on load 
    FB.getLoginStatus(handleSessionResponse); 

    $('#login').bind('click', function() { 
     FB.login(handleSessionResponse); 
    }); 

    $('#disconnect').bind('click', function() { 
     FB.api({ method: 'Auth.revokeAuthorization' }, function(response) { 
     clearDisplay(); 
     }); 
    }); 

    // no user, clear display 
    function clearDisplay() { 
     $('#user-info').hide('fast'); 
    } 

    // handle a session response from any of the auth related calls 
    function handleSessionResponse(response) { 
     // if we dont have a session, just hide the user info 
     if (!response.session) { 
     clearDisplay(); 
     return; 
     } 

     // if we have a session, query for the user's profile picture and name 
     FB.api(
     { 
      method: 'fql.query', 
      query: 'SELECT name, pic FROM profile WHERE id=' + FB.getSession().uid 
     }, 
     function(response) { 
      var user = response[0]; 
      $('#user-info').html('<img src="' + user.pic + '">' + user.name).show('fast'); 
     } 
    ); 
    } 
    </script> 
</body> 

Lo ok here per l'intero codice e here puoi trovare altre risorse.

+0

Grazie per l'aiuto Kucede. Sono stato in grado di sbarazzarmi (sì, davvero) del mio progetto usando la vecchia classe FB.Connect. Quanto è ironico il fatto che la documentazione di FB Dev contenga un insieme di vecchi codici + nuovi, senza alcun indizio su quale versione dovrebbe appartenere a quel documento ... Questa è davvero la documentazione più terribile che abbia mai visto in vita mia. Apprezzo il tuo aiuto però. Potrebbe essere necessario usarlo se mi imbatterò in un progetto simile in futuro. –

1

È necessario impostare l'URL post-autorizzazione su tela e accertarsi che l'URL della tela di base sia un prefisso dell'URL post-autorizzazione.

3

Avevo impostato il mio indirizzo di connessione facebook per avere www e stavo accedendo al mio sito di test con non www, quando sono passato alla versione www fb connect ha funzionato bene.