有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 的网址其中 thread id 是最后的数字。但也有一些陌生的网址,如 http://www.facebook.com/messages/?action=read&tid=27726d81656e4c07ae5654116cccb724以前的规则不起作用的地方。 是否有使用 Graph API 或 FQL 获取线程 URL 的解决方案?
最佳答案
如果您拥有的 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;
关于facebook - 如何获取知道线程 ID 的消息线程 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9051642/