2011-11-28 5 views

Respuesta

2

Desde el FB JavaScript SDK, puede usar FB.getLoginStatus para recuperar el signed_request.

Eso es si el usuario ha iniciado sesión en su aplicación/sitio web.

Si no puede llamar al método FB.login.

Ref: http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

siguiente en A SU COMENTARIO:

Hola,

creo que usted debe tratar de registrar la respuesta a la consola.

response.status debe ser igual a 'conectado' si el usuario está conectado. Siempre devolverá verdadero, ya que se devolverá un valor en este parámetro de respuesta.

El registro se parecerá tan

{ 
    status: 'connected', 
    authResponse: { 
     accessToken: '...', 
     expiresIn:'...', 
     signedRequest:'...', 
     userID:'...' 
    } 
} 

Para probar lo que se está retorno intente esto:

if(response.status == 'connected'){ 
    // user is logged and signed_request is accessible 
    // with response.authResponse.signedRequest 
}else{ 
    // user not logged in, request them to login 
     FB.login(function(response){ ... }); 
} 
+2

gracias por responder uoyr. Estoy tratando de hacer: FB.getLoginStatus (función (respuesta) { \t \t si (response.authResponse) { \t \t alert ("OK"); \t \t} else { \t \t alert ("NO") ; \t \t} \t \t \t \t/* si (Response.Status) { \t \t alert ("OK"); \t \t} else { \t \t alerta ("NO"); \t \t} */ \t \t}); response.status devuelve SÍ, pero response.authResponse devuelve NULL. No es una aplicación que el usuario necesita instalar, solo es una pestaña en mi página de Facebook, pero necesito que me registren request_request – user1067939

2

Desde el Facebook documentation:

La solicitud firmada se envía a través de una HTTP POST a la URL establecida como Lienzo URL en el Tablero de aplicaciones.

[énfasis del autor]

No se puede acceder a esos datos de POST directamente a través de JavaScript:

posterior de los datos se supone que es recibido por el servidor. Como conclusión, el navegador no otorga acceso a esos datos, acepta que el servidor representa los datos en el código del cliente. Pregunta relacionada: How to read POST request parameters using JavaScript

Ahora, ¿por qué es así? Supongo que el motivo es security: Imagine enviar una contraseña en una solicitud POST a su servidor y algún complemento de JavaScript malicioso que use en su aplicación tratando de leer esa información y enviarla a su propio servidor malicioso. Eso no sería bueno en absoluto.

En su caso, los datos POST incluyendo la signed_request se envía a su aplicación a través de un HTTP POST por Facebook que solicita la página de su aplicación a través de la URL lienzo que ha especificado en el salpicadero aplicación oa través de la URL de redireccionamiento se especifica usando el Registration plugin. Puede acceder a él a través del FB.getLoginStatus.Los requisitos previos son: o está utilizando una aplicación de lienzo (está "adentro" de Facebook, tiene una pestaña de página o una aplicación de lienzo) o Registration Plugin. Asegúrese de obtener el estado en la URL que especificó. preguntas relacionadas: How do you post to an iframe? y getSignedRequest is null when not on a tab page

también intentar llamar FB.getLoginStatus con el segundo conjunto de parámetros que true para forzar una ida y vuelta a Facebook - refrescante con eficacia la memoria caché del objeto de la respuesta y la solución de los problemas con los usuarios de haber iniciado sesión en (o fuera de) Facebook desde la última consulta de sesión completa o haber retirado su solicitud en la configuración de su cuenta:

FB.getLoginStatus(function(response) { 
    // this will be called when the roundtrip to Facebook has completed 
}, true); 

también echa un vistazo a esta pregunta - que podría ayudar: Facebook iframe tab signed request always empty

0

obtener la solicitud firmada usando javascript desde facebook es diferente del valor en $ _REQUEST ['signed_request']

lo que puedes hacer es almacenar $ _REQUEST ['signed_request'] en una variable javascript y pasarlo por ajax a php .

por ejemplo

var signedRequest = <?php echo $_REQUEST['signed_request'] ?> 

// luego disparar una solicitud jsonp ..

puede utilizar mi servicio, aunque si quieres.

Modo de empleo: solo use una solicitud jsonp a este

https://websta.me/fbappservice/parseSignedRequest/<append signed request here> 

si el éxito se volverá algo como esto

{ 
"algorithm": "HMAC-SHA256", 
"issued_at": xxxxx, 
"page": { 
    "id": "xxxxxxx", 
    "admin": true, 
    "liked": false 
}, 
"user": { 
    "country": "jp", 
    "locale": "en_US", 
    "age": { 
     "min": xx 
    } 
} 

si no es la salida:

Bad signed Json Signature 

feliz codificación!

Cuestiones relacionadas