如果我有消息 ID,如何构建链接以查看 facebook.com 上的消息

发布于 2024-12-09 10:30:48 字数 786 浏览 0 评论 0原文

我使用以下图形 API 调用检索消息收件箱:

https://graph.facebook.com/me/inbox?access_token=...

它返回一组消息,每个消息都有一个标识“id”(与 FQL 返回的消息 ID 相同)

我希望能够提供链接让用户直接在 Facebook.com 上查看消息。

类似:https://www.facebook.com/messages/?action=read&tid=....

如果您浏览 Facebook 本身的消息,您会看到这个链接。

然而,我似乎无法找到一种方法来从 Graph API 或 FQL 中发现正确的 tid。

我也没有找到替代网址。

此网址曾经有效,但现在对我来说已损坏: http://facebook.com/?sk =messages&tid=...

它只是重定向到顶级消息传递页面:https:// www.facebook.com/messages/

有什么想法吗?

非常感谢

I am retrieving the messaging inbox with the following graph api call:

https://graph.facebook.com/me/inbox?access_token=...

It returns an array of messages that each have an identifying "id" (same as message id as returned by FQL)

I would like to be able to provide a link for the user to view a message directly on Facebook.com.

Something like: https://www.facebook.com/messages/?action=read&tid=....

That is the link you get to if you you browse to a message from facebook itself.

However I can't seem to find a way to discover the correct tid from either the Graph API or FQL.

I haven't had any luck in figuring out an alternative URL either.

This url used to work, but is broken for me now: http://facebook.com/?sk=messages&tid=...

It just redirects to the top level messaging page: https://www.facebook.com/messages/

ANY IDEAS?

Thanks so much

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心碎的声音 2024-12-16 10:30:48

从图形 API 获取到 me/inbox 结果集给出 id 作为返回的每个对象的一部分。这也是thread_id。

如果您拥有的 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;

From graph API get to me/inbox the result set gives id as part of each object returned. This is also thread_id.

If the id you have is a string object (probably a guid), this is from Facebook's older message system storage structure. Now they've updated to a new storage structure that requires the old ones to be migrated into the new

So you have a fairly easy check:

If thread id is a long (Int64/BigInt), then you have a new thread and can use
http://www.facebook.com/messages/?action=read&tid=id.THREAD_ID

If thread id is a string then you have a older thread and can use

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

many programming languages have their own form of checking the type of a value.

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文