2011-08-08 4 views
11

así que después de actualizar a php 3.0 sdk y lo que no, mi función FB.login() ya no solicita los permisos que configuré para preguntar. ¿Alguien más está obteniendo esto? Aquí hay algo de código para usted:Facebook (FB.login) no solicitando mis permisos

window.fbAsyncInit = function() { 
    FB.init({ 
    appId: 'xxx', 
    status: true, 
    cookie: true, 
    xfbml: true, 
    oauth : true // enables OAuth 2.0 
    }); 
    // whenever the user logs in, we refresh the page 
    //FB.Event.subscribe('auth.login', function() { 
    // window.location.reload(); 
    //});  
}; 


FB.login(function(response) { 
    if (response.authResponse) { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
     FB.logout(function(response) { 
     console.log('Logged out.'); 
     }); 
    }); 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
    } 
}, {scope:'read_stream,publish_stream,offline_access'}); 

La forma en que estoy tratando de acceder a él, es a través de un onClick="FB.login();". ¿Alguien puede ayudar?

+0

¿Lograste resolver este problema? – Future2020

Respuesta

5

Comprobación de la fuente del SDK JS encontré que todavía se usan permanentes y no alcance como lo documentó. Esto es trabajo para mí:

...onclick="FB.login(handleLoginResponse, {perms:'email,manage_pages,user_birthday'});return false;"...

espero que ayude.

+4

Solo un aviso que esta información no está actualizada. Prueba esto y obtendrás "Error no detectado: la especificación OAuth2 establece que 'permanentes' ahora debe llamarse 'alcance'. Actualízate". –

+1

Michael tiene razón en lo anterior: se debe usar 'alcance'. – Tibor

+0

No funciona, ni con permanentes ni con scope –

4

Veo algo relacionado con esto con el JS SDK. Al establecer oauth=true, la función

FB.login(function (response) { 
    if (response.authResponse) { 
     console.log('Welcome! Fetching your information.... '); 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
} 
}, { scope: 'email,publish_stream,user_birthday,user_location' }); 

solicita correctamente los permisos ampliados, pero utilizando el <fb:login-button>FBXML con scope="email,publish_stream,user_birthday,user_location" no.

Esto parece un error de Facebook a mí ...

1

Creo que es porque se está llamando FB.logout dentro del bloque FB.login.

Efectivamente, lo que ocurre es que tan pronto como inician sesión, se desconectan.

Así separada de esta manera:

// CALLED WHEN USER LOGS IN 
function userLogin() { 
    FB.login(function(response) { 
     if (response.authResponse) { 
      console.log('Welcome! Fetching your information.... '); 
      FB.api('/me', function(response) { 
       console.log('Good to see you, ' + response.name + '.'); 
      }); 
     } else { 
      console.log('User cancelled login or did not fully authorize.'); 
     } 
    }, {scope:'read_stream,publish_stream,offline_access'}); 
} 

// CALLED WHEN USER LOGS OUT 
function userLogout() { 
    FB.logout(function(response) { 
     console.log('Logged out.'); 
    }); 
} 
0

que tenían exactamente el mismo problema hasta que me di cuenta que era una cuestión de navegador/facebook problema de almacenamiento en caché. Asegúrate de tener el último código en tu espacio web y prueba tu aplicación en un nuevo navegador si esa es la solución a tu problema.

2

Mi problema era similar a usted. He comprobado todos mis javascript para verificar si mi alcance era bueno en la definición de FB.login. Finalmente me di cuenta de que tengo un botón de Facebook en mi HTML.

<form class="form-signin"><fb:login-button size="large">Facebook</fb:login-button></form> 

Cuando También he definido el alcance en el botón FB, Facebook me pregunta registrado correctamente para aceptar nuevos permisos si cambio de alcance

<form class="form-signin"><fb:login-button size="large" scope="<?php print($sFacebookScope);?>">Facebook</fb:login-button></form> 
+0

¡Esta es la única solución de trabajo! atributo de alcance es necesario para el botón XFBML! Esto no se menciona en la documentación, y los ejemplos de código están incompletos. ¡Definitivamente es un error de documentación! –

0

La única solución que ha funcionado para mí estaba poniendo el permisos en la etiqueta del botón de inicio de sesión como este:

<fb:login-button show-faces="true" width="200" max-rows="1" data-scope="email">< /fb:login-button>

Cuestiones relacionadas