2012-01-29 8 views
5

Hay How can I construct a link to view a message on facebook.com if I have the message id pregunta, pero no ha sido respondida. ¿Qué pasa si obtengo el id del hilo usando el punto final API/me/inbox API y necesito redirigir al usuario al Facebook mismo que muestra este hilo? ¿Cómo construyo la URL? Parece que hay URL como http://www.facebook.com/messages/?action=read&tid=id.143666952390138 donde id de la cadena es el número al final. Pero también hay algunas URL más desconocidas, como http://www.facebook.com/messages/?action=read&tid=27726d81656e4c07ae5654116cccb724, donde la regla anterior no funciona. ¿Hay alguna solución para obtener URL de subprocesos mediante Graph API o FQL?¿Cómo obtener la URL de la secuencia de mensajes conociendo la id de la secuencia?

Respuesta

8

Si la identificación que tiene es un objeto de cadena (probablemente un guid), esto es de la estructura de almacenamiento del sistema de mensajes más viejo de Facebook. Ahora se han actualizado a una nueva estructura de almacenamiento que requiere los antiguos para ser migrado a la nueva

Así que tienes un cheque bastante fácil:

Si ID del tema es un largo (Int64/Bigint), entonces usted tiene un nuevo hilo y puede utilizar http://www.facebook.com/messages/?action=read&tid=id.THREAD_ID

Si ID del tema es una cadena, entonces usted tiene un hilo mayor y puede utilizar

http://www.facebook.com/messages/?action=read&tid=THREAD_ID

muchos langu programación las edades tienen su propia forma de verificar el tipo de valor.

var threadId = (string)data.thread_id; 
var longVal = 0L;  
var isLong = Int64.TryParse(threadId, out longVal); 
var threadUrl = (isLong) ? 
    "http://www.facebook.com/messages/?action=read&tid=id." + threadId : 
    "http://www.facebook.com/messages/?action=read&tid=" + threadId; 
+1

Sería muy bueno si todo estaba este sencillo, pero al solicitar/Me/bandeja de entrada de API de gráficos para la 27726d81656e4c07ae5654116cccb724 (como el ID debe ser adecuadamente facebook abierta la página de rosca) Rosca consigo una identificación de 64 bits " ":" 1956133107397 ". Y si utilizo el id de/me/inbox (el de 64 bits) para construir la url de la página del hilo obtengo el error "No se encontró el mensaje". No puedo recuperar el id. Hexadecimal más largo de facebook usando Graph API. – vian

+1

No sé qué hizo con los valores, pero todo lo que intenté siempre, siempre, siempre funcionó usando el código que publiqué anteriormente. Por supuesto, debe tener un ** token de acceso de USUARIO válido con permisos de 'read_mailbox' **. Ver: https://developers.facebook.com/docs/reference/api/permissions – DMCS

+0

Tengo un permiso read_mailbox y lo comprobé funcionando, pero por alguna razón puedo obtener el id. Largo de cadena hexadecimal solo cuando estoy usando/conexión me/threads, cuando uso/me/inbox recibo una identificación que no funciona. Usar/me/threads sería más fácil si no requiriera que el usuario sea el desarrollador de la aplicación. – vian

Cuestiones relacionadas