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

via*_*ian 5 api facebook facebook-fql facebook-graph-api

还有我怎样才能建立一个链接以查看在facebook.com上的消息,如果我有消息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的解决方案?

DMC*_*MCS 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;
Run Code Online (Sandbox Code Playgroud)

  • @DMCS很好的答案:) (2认同)