it-swarm.com.ru

Пользовательские схемы URI для Facebook Messenger

Учитывая недавнее " поощрение " Facebook для перехода на отдельное приложение для обмена сообщениями, а также в качестве продолжения {очень информативно!} ответ на вопрос о схемах URL/URI, поддерживаемых Приложение Facebook , мне было интересно, доступна ли информация о приложении мессенджера Facebook собственный протокол of fb-messenger://.

Функцией, которую я искал, была способность нажимать кнопку, которая открывала бы окна чата FB-messenger с пользователем, чей числовой идентификатор Facebook известен. Это также необходимо для работы, если на устройстве не установлено приложение Facebook ( katana ) (т.е. только мессенджер, orca ).

Я нашел пример желаемого глубокая ссылка (fb-messenger://user-thread/{user-id}), но, похоже, это не сработало. Я понял, что FB имеет тенденцию пересматривать URI время от времени, так как они, как правило, не должны быть доступны для общественности (насколько я понимаю).

19
Dev-iL

После неудачного поиска этой информации я решил составить собственный список. Ниже то, что мне удалось собрать, вместе с несколькими объяснениями:

Это обновление для версии 141.0.0.25.76 (21 октября , 2017) .

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

Вот некоторые схемы URI, назначение которых в этом приложении я не знаю:

  • fb:// - увидеть возможные URI этой схемы здесь .
  • fb-work://
  • fbinternal://
  • fb-messenger-secure://
  • dialtone://

Расследование fb-messenger://share (из более старой версии этого поста - может быть недействительным ):

  • Имеет StringExtra с именем ShareType, который может быть: ShareType.invite, ShareType.forward, ShareType.regular.
  • Имеет необязательный (?) StringExtra с именем ShareType.invitedUser.
  • Имеет необязательный (?) StringExtra с именем ShareType.invitedUserDisplayName.
  • Имеет необязательный (?) StringExtra с именем ShareType.inviteEntryPoint.
  • Имеет необязательный (?) StringExtra с именем ShareType.invitesSentBroadcastAction.
  • (несколько других)

В случае ShareType.forward:

  • Имеет Extra с тегом "attachment"ИЛИ"message".
  • Имеет Extra с тегом "trigger".

Extra поля общего ресурса Intent (тег: тип ):

  • Android.intent.extra.TEXT: Строка
  • attachment: Parcelable
  • message: Parcelable
  • page_name: Строка
  • page_post_id: Строка
  • page_target: Long
  • send_as_message_entry_point: Строка
  • share_attachment_url: Строка
  • share_caption: Строка
  • share_description: Строка
  • share_fbid: Строка
  • share_link_url: Строка
  • share_media_url: Строка
  • share_return_to_fb4a: Boolean
  • share_robotext: Строка
  • share_story_url: Строка
  • share_title: Строка
  • ShareType: Строка
  • target_recipients: StringArray
  • title: Строка
  • trigger: Строка

Требуемая функциональность может быть достигнута с использованием fb-messenger://user/{user-id} вместо fb-messenger://user-thread/{user-id}.

Обратите внимание , что {user-id} - это глобальный числовой идентификатор пользователя (например, для Цака это 4 ), который можно получить (по состоянию на ноябрь 2015 года) путем анализа html-документа, соответствующего имени пользователя этого человека (например, для Цака это https://www.facebook.com/zuck ) и извлечения "entity_id", который находится внутри.

Согласно моему последнему тесту, идентификаторы пользователей в приложении , которые обычно являются идентификаторами, доступными для разработчиков, не работают для этого!

Ниже приведен скрипт на python3, который извлекает глобальный идентификатор для известного имени пользователя (credit: 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 .

56
Dev-iL

В текущей версии Facebook на Android автоматически просят пользователя открыть приложение или открыть в chrome, когда вы используете его домен www.messenger.com. Лучше просто перенаправить пользователя на этот URL и разрешить Facebook справиться с этим

https://www.messenger.com/t/ {имя пользователя или страницы-имя-здесь}

Intent intent;
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.messenger.com/t/{username-or-page-name-here}"));
startActivity(intent);
4
SirNarsh

Это просто поделиться ссылкой

<a href="fb-messenger://share?link=encodedLink"></a>
3
ethannguyens

Использование chrome намерений для Android: приведенный ниже код открывает FB messenger, если он установлен. Иначе перенаправляет на запасной URL.

<a href="intent://user/<yourid>/#Intent;scheme=fb-messenger;package=com.facebook.orca;S.browser_fallback_url=http://yourfllbackweburl;end"> Open Messenger</a>
1
Abhilash