有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的解决方案?
答案 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;