2010-04-27 16 views
7

Estoy tratando de implementar Facebook Connect en un sitio web. Estoy tratando de trabajar con Javascript SDK de Facebok. Soy nuevo y, desafortunadamente, la mayoría de los enlaces proporcionados en Facebook WIKI están desactualizados ... No se encontraron 404. De todos modos yo añadido este código antes de la </body> fin:API Error clave en Facebook Connect (javascript SDK)

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

Y tengo un botón de acceso en algún otro lugar (mucho antes de que los guiones anteriores) en la misma página representada con:

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

Este botón se presenta como un botón de conexión fb normal y al hacer clic se abre una nueva ventana emergente como debería ser normalmente. El problema es que muestra el error "clave api no válida especificada". Al inspeccionar la barra de direcciones de la ventana emergente, veo que api_key = undefined se le pasa :(

¿Alguna idea sobre esto? Estoy tratando de solucionar esto durante las últimas 5 horas ... Ayúdenme a descubrir por qué la API correcta clave no se está pasando a ventana emergente.

Gracias de antemano.

Respuesta

4

que estoy haciendo lo mismo, y me encontré con un ejemplo que es muy fácil de implementar y entender (en este caso el uso de thay jQuery, pero puede hacer lo mismo sin bibliotecas):

<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 para todo el código, y here puede encontrar otro recurso.

+0

Gracias por la ayuda Kucede. Pude deshacerme (sí, realmente) de mi proyecto usando la antigua clase FB.Connect. Qué irónico es que la documentación de FB Dev contenga una mezcla de códigos antiguos + nuevos, sin ninguna pista sobre a qué versión pertenece ese documento ... Realmente esta es la documentación más terrible que he visto en mi vida. Aunque aprecio tu ayuda. Puede ser que necesite usar esto si encuentro un proyecto similar en el futuro. –

1

Debe configurar el lienzo después de autorizar la url y asegurarse de que la url base del lienzo sea un prefijo de la url posterior a la autorización.

3

Había establecido mi dirección de Facebook Connect para tener www y estaba accediendo a mi sitio de prueba con no www, cuando cambié a la versión www fb connect funcionó bien.

Cuestiones relacionadas