如何获取消息线程URL知道线程ID?

时间:2012-01-29 07:27:15

标签: facebook api facebook-graph-api facebook-fql

How can I construct a link to view a message on facebook.com if I have the message id个问题,但没有答案。如果我使用/ me / inbox API端点获取线程的id并且需要将用户重定向到显示此线程的Facebook本身,该怎么办?我如何构建URL。似乎有像http://www.facebook.com/messages/?action=read&tid=id.143666952390138这样的网址,其中线程ID是最后的数字。但也有一些像http://www.facebook.com/messages/?action=read&tid=27726d81656e4c07ae5654116cccb724这样的陌生网址,其中之前的规则并不起作用。 有没有使用Graph API或FQL获取线程URL的解决方案?

1 个答案:

答案 0 :(得分:8)

如果你拥有的id是一个字符串对象(可能是一个guid),这是来自Facebook的旧消息系统存储结构。现在他们已经更新到新的存储结构,需要将旧的存储结构迁移到新的

所以你有一个相当容易的检查:

如果线程id是long(Int64 / BigInt),那么你有一个新线程可以使用 http://www.facebook.com/messages/?action=read&tid=id.THREAD_ID

如果线程id是一个字符串,那么你有一个较旧的线程,可以使用

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

许多编程语言都有自己的形式来检查值的类型。

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;