Tengo una aplicación FaceBook.aplicación de Facebook - obtener signed_request con JavaScript
¿Hay alguna forma de obtener la solicitud firmada con JavaScript?
Con PHP se ve así: $_REQUEST['signed_request']
, pero no puedo usar php.
Tengo una aplicación FaceBook.aplicación de Facebook - obtener signed_request con JavaScript
¿Hay alguna forma de obtener la solicitud firmada con JavaScript?
Con PHP se ve así: $_REQUEST['signed_request']
, pero no puedo usar php.
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){ ... });
}
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
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!
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