Facebook Messenger的自定义URIscheme
鉴于Facebook最近“ 鼓励 ”迁移到单独的Messenger应用程序,并且作为对Facebook应用程序支持的URL / URIscheme问题的{非常翔实的} 回答的后续,我一直在思考fb-messenger://的Facebook Messenger应用程序自定义协议可用。
我正在寻找的function是能够点击一个button,将打开一个FB用户的数字Facebook ID已知的用户聊天窗口。 如果Facebook应用程序( katana )没有安装在设备上(即只有信使, 逆戟鲸 ),这也需要工作。
我find了一个想要的深层链接的例子 ( fb-messenger://user-thread/{user-id} ),但是这似乎不起作用。 我意识到FB有每隔一段时间修改一次URI的倾向,因为这些通常不应该公开(据我所知)。
在search这些信息失败之后,我决定列出我自己的列表。 以下是我迄今为止收集的数据,以及一些解释:
这已更新为版本141.0.0.25.76 (2017年10月21日) 。
fb-messenger://accounts fb-messenger://active_now fb-messenger://addcard fb-messenger://addmembers fb-messenger://android_date_time fb-messenger://android_storage fb-messenger://autocompose fb-messenger://autocompose_payment fb-messenger://bots/get_started/?page_id=%s&cta_id=%s fb-messenger://business fb-messenger://business/ fb-messenger://business_extensions fb-messenger://buy/mc?item_id={#%s} fb-messenger://callsearch fb-messenger://commerce/ fb-messenger://compose fb-messenger://contactmigration fb-messenger://contacts fb-messenger://contacts/add_contacts fb-messenger://contactuploadoptin fb-messenger://direct_share fb-messenger://drawoverotherapps fb-messenger://games fb-messenger://groupcompose fb-messenger://groupstab fb-messenger://groupthreadfbid/ fb-messenger://groupthreadfbid/%s fb-messenger://ig_contact_import fb-messenger://installupdate fb-messenger://instant_article/?article_id= fb-messenger://instant_article/?article_id=%s fb-messenger://invite fb-messenger://join_request fb-messenger://mai fb-messenger://messagerequests fb-messenger://messagesearch fb-messenger://montage fb-messenger://montage_composer fb-messenger://montage_mediapicker fb-messenger://montageaudiencepicker fb-messenger://montagecomposer fb-messenger://networkempathy fb-messenger://new fb-messenger://newuser/ fb-messenger://newuser/signup?provider_name=%s&provider_page_fbid=%s fb-messenger://nfc fb-messenger://omni_m fb-messenger://opengrouppreview fb-messenger://opengrouppreview?group_preview_hash= fb-messenger://optimistic fb-messenger://optimistic/%s fb-messenger://payments fb-messenger://payments/ fb-messenger://platform fb-messenger://platform/cta/postback/?cta_id=%s fb-messenger://platform/share/?cta_id=%s fb-messenger://ride_map/{%s} fb-messenger://roomcompose fb-messenger://rtccall fb-messenger://sampleflows fb-messenger://settings fb-messenger://settings/datasaver fb-messenger://settings/messengeronlybackup fb-messenger://settings/montage fb-messenger://settings/notifications fb-messenger://settings/people fb-messenger://settings/phoneevents fb-messenger://settings/profilepicture fb-messenger://settings/tincan fb-messenger://share < Used for sharing multimedia, contains several extras. See more info below. fb-messenger://sms fb-messenger://sms/ fb-messenger://sms/%s fb-messenger://sms-bridge fb-messenger://sms-takeover fb-messenger://sms-takeover/nux?context=%s fb-messenger://sms-takeover/nux?context=%s&thread_id=%s fb-messenger://sms-takeover/sms_anonymous_chat_head fb-messenger://stickerstore fb-messenger://thread/ < Deprecated fb-messenger://threadkeystring fb-messenger://threads fb-messenger://threadsettings fb-messenger://user fb-messenger://user/ fb-messenger://user/%s < Opens chathead/conversation with user %s, where %s is the numeric fb user id. Using a username string here crashes the orca app. fb-messenger://user/%s?ref=%s&ref_source=%s fb-messenger://verifyphonenux fb-messenger://voip fb-messenger://wave
这里有一些URIscheme,其目的在这个应用程序,我不知道:
-
fb://– 在这里看到这个scheme的可能的URI。 -
fb-work:// -
fbinternal:// -
fb-messenger-secure:// -
dialtone://
fb-messenger://share调查fb-messenger://share (从这个post的旧版本 – 可能是无效的 ):
- 有一个名为
ShareType的StringExtra,它可以是:ShareType.invite,ShareType.forward,ShareType.regular。 - 有一个名为
ShareType.invitedUser的可选 (?)StringExtra。 - 有一个名为
ShareType.invitedUserDisplayName的可选 (?)StringExtra。 - 有一个可选的 (?)
StringExtra名为ShareType.inviteEntryPoint。 - 有一个名为
ShareType.invitesSentBroadcastAction的可选 (?)StringExtra。 - (其他几个)
在ShareType.forward的情况下:
- 有
Extra的标签"attachment"或"message"。 - 有一个
Extra的标签"trigger"。
共享的Extra字段Intent (标签: types ):
-
android.intent.extra.TEXT: String -
attachment: Parcelable -
message: Parcelable -
page_name: String -
page_post_id: string -
page_target: 长 -
send_as_message_entry_point: String -
share_attachment_url: string -
share_caption: String -
share_description: string -
share_fbid: string -
share_link_url: string -
share_media_url: string -
share_return_to_fb4a: 布尔值 -
share_robotext: String -
share_story_url: string -
share_title: string -
ShareType: string -
target_recipients: StringArray -
title: string -
trigger: string
通过使用fb-messenger://user/{user-id}而不是fb-messenger://user-thread/{user-id}可以实现所需的function。
请注意 , {user-id}是用户的全局数字ID (例如Zuck是4 ),可以通过parsing与该用户名相对应的html文档(例如Zuck的https://www.facebook.com/zuck )并提取里面find的"entity_id" 。
根据我最近的testing, 应用程序范围的用户ID (通常是开发人员可用的ID)不适用于此!
下面是一个python3脚本,提取一个已知用户名的全局ID(信用: Paul Schreiber ):
#!/usr/bin/python import requests import re url = 'https://www.facebook.com/zuck' idre = re.compile('"entity_id":"([0-9]+)"') page = requests.get(url) print(idre.findall(page.content.decode()))
另外, 这个网站可以用来实现同样的事情。
还请注意,这种方法是不正式支持 ,甚至可能让你的应用程序禁止FB 。
这只是分享一个链接
<a href="fb-messenger://share?link=encodedLink"></a>
Android使用chrome intents:下面的代码打开如果安装了FB messenger。 否则redirect到回退URL。
<a href="intent://user/<yourid>/#Intent;scheme=fb-messenger;package=com.facebook.orca;S.browser_fallback_url=http://yourfllbackweburl;end"> Open Messenger</a>