Custom URI Schemes for the Facebook Messenger
After unsuccessfully searching for this information, I've decided to make a list of my own. Below is what I managed to gather so far, along with a few explanations:
These were taken from version 141.0.0.25.76 (October 21, 2017):
fb-messenger://accountsfb-messenger://active_nowfb-messenger://addcardfb-messenger://addmembersfb-messenger://android_date_timefb-messenger://android_storagefb-messenger://autocomposefb-messenger://autocompose_paymentfb-messenger://bots/get_started/?page_id=%s&cta_id=%sfb-messenger://businessfb-messenger://business/fb-messenger://business_extensionsfb-messenger://buy/mc?item_id={#%s}fb-messenger://callsearchfb-messenger://commerce/fb-messenger://composefb-messenger://contactmigrationfb-messenger://contactsfb-messenger://contacts/add_contactsfb-messenger://contactuploadoptinfb-messenger://direct_sharefb-messenger://drawoverotherappsfb-messenger://gamesfb-messenger://groupcomposefb-messenger://groupstabfb-messenger://groupthreadfbid/fb-messenger://groupthreadfbid/%sfb-messenger://ig_contact_importfb-messenger://installupdatefb-messenger://instant_article/?article_id=fb-messenger://instant_article/?article_id=%sfb-messenger://invitefb-messenger://join_requestfb-messenger://maifb-messenger://messagerequestsfb-messenger://messagesearchfb-messenger://montagefb-messenger://montage_composerfb-messenger://montage_mediapickerfb-messenger://montageaudiencepickerfb-messenger://montagecomposerfb-messenger://networkempathyfb-messenger://newfb-messenger://newuser/fb-messenger://newuser/signup?provider_name=%s&provider_page_fbid=%sfb-messenger://nfcfb-messenger://omni_mfb-messenger://opengrouppreviewfb-messenger://opengrouppreview?group_preview_hash=fb-messenger://optimisticfb-messenger://optimistic/%sfb-messenger://paymentsfb-messenger://payments/fb-messenger://platformfb-messenger://platform/cta/postback/?cta_id=%sfb-messenger://platform/share/?cta_id=%sfb-messenger://ride_map/{%s}fb-messenger://roomcomposefb-messenger://rtccallfb-messenger://sampleflowsfb-messenger://settingsfb-messenger://settings/datasaverfb-messenger://settings/messengeronlybackupfb-messenger://settings/montagefb-messenger://settings/notificationsfb-messenger://settings/peoplefb-messenger://settings/phoneeventsfb-messenger://settings/profilepicturefb-messenger://settings/tincanfb-messenger://share < Used for sharing multimedia, contains several extras. See more info below.fb-messenger://smsfb-messenger://sms/fb-messenger://sms/%sfb-messenger://sms-bridgefb-messenger://sms-takeoverfb-messenger://sms-takeover/nux?context=%sfb-messenger://sms-takeover/nux?context=%s&thread_id=%sfb-messenger://sms-takeover/sms_anonymous_chat_headfb-messenger://stickerstorefb-messenger://thread/ < Deprecatedfb-messenger://threadkeystringfb-messenger://threadsfb-messenger://threadsettingsfb-messenger://userfb-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=%sfb-messenger://verifyphonenuxfb-messenger://voipfb-messenger://wave
These are some additions taken from version 293.0.0.13.232 (December 8th 2020):
fb-messenger://carrier_messaging/fb-messenger://carrier_messaging//%sfb-messenger://carrier_messaging_group/fb-messenger://carrier_messaging_group//%sfb-messenger://dialtone/switch_to_dialtonefb-messenger://instant_games/play?game_id=fb-messenger://m.me/fb-messenger://payments/checkout/?product_type=pages_commerce&product_id=fb-messenger://payments/paypal_close/fb-messenger://payments/settingsfb-messenger://paypal_connect_fail/fb-messenger://paypal_connect_success/fb-messenger://settings/datasettingfb-messenger-sametask://instant_games_contact_pickfb-messenger-sametask://montage_mediapickerfb-messenger-sametask://sharefb-messenger-sametask://threadsettingsfb-messenger-secure://accountsfb-messenger-secure://accounts/triggerssofb-messenger-secure://join_requestfb-messenger-secure://messagerequestsfb-messenger-secure://messagesearchfb-messenger-secure://notification_to_account_switchfb-messenger-secure://page_notification_direct_replyfb-messenger-secure://page_rtc_notification_to_account_switchfb-messenger-secure://rtccall/audio/%sfb-messenger-secure://speakeasy_invite_list
Here are some URI schemes whose purpose in this app I don't know:
fb://
- see possible URIs of this scheme here.dialtone://
fbinternal://
fb-messenger-aol://
fb-messenger-assistant://
fb-messenger-lite://
fb-messenger-lite-secure://
fb-messenger-public://
fb-messenger-secure://
fb-work://
Investigation of fb-messenger://share
(from older version of this post - may be invalid):
- Has a
StringExtra
calledShareType
that can be:ShareType.invite
,ShareType.forward
,ShareType.regular
. - Has an optional (?)
StringExtra
calledShareType.invitedUser
. - Has an optional (?)
StringExtra
calledShareType.invitedUserDisplayName
. - Has an optional (?)
StringExtra
calledShareType.inviteEntryPoint
. - Has an optional (?)
StringExtra
calledShareType.invitesSentBroadcastAction
. - (several others)
In the case of ShareType.forward
:
- Has an
Extra
with the tag"attachment"
OR"message"
. - Has an
Extra
with the tag"trigger"
.
###Extra
fields of a share Intent
(tag : type):###
android.intent.extra.TEXT
: Stringattachment
: Parcelablemessage
: Parcelablepage_name
: Stringpage_post_id
: Stringpage_target
: Longsend_as_message_entry_point
: Stringshare_attachment_url
: Stringshare_caption
: Stringshare_description
: Stringshare_fbid
: Stringshare_link_url
: Stringshare_media_url
: Stringshare_return_to_fb4a
: Booleanshare_robotext
: Stringshare_story_url
: Stringshare_title
: StringShareType
: Stringtarget_recipients
: StringArraytitle
: Stringtrigger
: String
The required functionality may be achieved by using fb-messenger://user/{user-id}
instead of fb-messenger://user-thread/{user-id}
.
Note that {user-id}
is the user's global numeric ID (e.g. for Zuck it's 4
), which can be obtained (as of Nov. 2015) by parsing the html document that corresponds to the person's user name (e.g. for Zuck it's https://www.facebook.com/zuck
) and extracting the "entity_id"
that is found inside.
According to my latest test, app-scoped user IDs, which are usually the IDs available to developers, do not work for this!
Below is a python3 script that extracts the global ID for a known username (credit: Paul Schreiber):
#!/usr/bin/pythonimport requestsimport reurl = 'https://www.facebook.com/zuck'idre = re.compile('"entity_id":"([0-9]+)"')page = requests.get(url)print(idre.findall(page.content.decode()))
Alternatively, this site can be used to achieve the same thing.
Please also note that this method is not officially supported and might even get your app banned by FB.
With current version Facebook on android automatically ask user to open the app or open in chrome when you use their domain www.messenger.comIt's better to just redirect user to this url and let facebook handle it
https://www.messenger.com/t/{username-or-page-name-here}
Intent intent;intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.messenger.com/t/{username-or-page-name-here}"));startActivity(intent);
This simply share a link
<a href="fb-messenger://share?link=encodedLink"></a>