深度链接到Facebook Messenger

20

通过大量搜索,我发现可以使用fb-messenger://user-thread/ID来深度链接到Messenger,并打开带有传递的FB ID的现有线程,如果不存在则开始一个新线程。

它会弹出到Messenger并打开一个线程,但是该线程是与Facebook用户一起的,并且实际上不会发送。请参见下面的图像。在标题中点击Facebook用户会转到具有正确用户图像和名称的详细视图。

如何使其正常工作?


请记住,Facebook 经常更改其方案,因此确保您不会在系统中给予它关键部分。 - Dani Sh90
嗨,克里斯,我知道这是一篇旧帖子,但你最终解决了这个问题吗? - LilMoke
5个回答

26

很抱歉又翻出这个旧话题,但似乎Facebook Messenger已经加入了通用链接,可以快速打开Messenger应用程序。

m.me/$USERNAME
例如:http://m.me/zuck 可以让您向 Zuckerberg 发送信息。
我尝试了一些参数,但似乎没有什么能够预填信息。

2
有人知道如何使用Facebook用户ID而不是用户名吗?当我使用Facebook ID时,出现“找不到用户名”的错误:( - owencm

17

正如WizKid(Facebook员工)在这里所说:

......没有记录的方法可以与[Messenger]交互,因此您所做的任何事情都可能在任何时刻中断。

因此,考虑到这一点,听起来fb-messenger://user-thread/ID已经被弃用。 话虽如此,我反编译了Facebook Android APK并找到了一行:

return Uri.parse((new StringBuilder("fb-messenger://user/")).append(Uri.encode(s)).toString());

从我所看到的情况来看,fb-messenger://user-thread/ID 已被替换为 fb-messenger://user/ID

还有一行是:

return Uri.parse((new StringBuilder("fb-messenger://thread/")).append(Uri.encode(s)).toString());

那么 fb-messenger://thread/ID 也可能是有效的。ID可以是用户或者线程ID,我没有深入研究过。

编辑: 当前Facebook的URL是 fb-messenger-public://user-thread/ID


感谢您深入挖掘并提供了详尽的答案。也许将这些URL之一嵌入到生产应用程序中并冒着随时出现故障的风险是不值得的。很遗憾,这并不更加开放给第三方使用。哦,算了。 - Chris
很高兴能够帮助,抱歉我不能给你期望的答案。如果您正在构建本地应用程序,则可以使用新的iOS SDK调用应用程序 https://developers.facebook.com/docs/messenger/ios - Parker
奇怪。我发现只有用户线程版本才能为我打开实际的对话,即 fb-messenger://user-thread/{user_id},其中 user_id 是数字 ID。fb-messenger//user/... 版本可以打开 Messenger 但无法打开对话。我无法让任何用户或线程 ID 与 fb-messenger://thread/... 形式配合使用。用户对话桌面和移动浏览器的等效形式看起来像是 https://www.facebook.com/messages/{user_id}https://m.facebook.com/messages/read/?fbid={user_id} - patricksurry
1
当前的Facebook URL是fb-messenger-public://user-thread/ID - saltwat5r
在Android中,每次显示Facebook用户时,都不是正确的用户帐户Uri.parse((new StringBuilder("fb-messenger://user/")).append(Uri.encode(use‌​r-id)).toString()); - Maulik Santoki
2
截至2018年1月,这对我不起作用。只是在Messenger中链接到一个空的对话。 - owencm

3
所有这些都已经改变了。Facebook发布了短链接来连接品牌或用户的Messenger个人资料。直接链接的方式是http://m.me/PROFILEPAGE_NAME
如果您正在构建机器人,您还可以传递一个推荐参数。我已经写了很多关于这方面的内容,链接到Messenger对话框,请查看这篇文章

1

使用fb-messenger-public://user-thread/<ID> 我从Facebook Messenger Web Hook负载中的收件人ID获得了我的ID。例如。

{
    "object": "page",
    "entry": [
        {
            "id": "1163189980393936",
            "time": 1500325170682,
            "messaging": [
                {
                    "sender": {
                        "id": ""
                    },
                    "recipient": {
                        "id": "ID"
                    },
                    "timestamp": 1500325170640,
                    "message": {
                        "mid": "mid.$cAAQh6kd9svBjg56V0FdUllNamImF",
                        "seq": 2888,
                        "text": "..."
                    }
                }
            ]
        }
    ]
}

1
如果您想直接跳转到代码,请在此处查看:
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://m.me/%ld", USER_ID]];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接