Подтвердить что ты не робот

Пользовательские схемы 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 время от времени, так как они, как правило, не должны быть доступны для общественности (насколько я понимаю).

4b9b3361

Ответ 1

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

Это обновление для версии 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: подлежит продаже
  • message: подлежит продаже
  • page_name: Строка
  • page_post_id: Строка
  • page_target: длинный
  • send_as_message_entry_point: Строка
  • share_attachment_url: Строка
  • share_caption: строка
  • share_description: Строка
  • share_fbid: Строка
  • share_link_url: Строка
  • share_media_url: Строка
  • share_return_to_fb4a: логическое значение
  • 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} - это глобальный числовой идентификатор пользователя (например, для Zuck it 4), который можно получить (по состоянию на ноябрь 2015 г.) путем анализа HTML-документ, который соответствует имени пользователя (например, для Zuck it https://www.facebook.com/zuck) и извлечению "entity_id", найденного внутри.

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

Ниже приведен скрипт на python3, который извлекает глобальный идентификатор для известного имени пользователя (кредит: Пол Шрайбер):

#!/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.

Ответ 2

С текущей версией 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);

Ответ 3

Просто добавьте ссылку

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

Ответ 4

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

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

Ответ 5

Я знаю, что уже поздно, но я надеюсь, что это поможет другим

Для моего случая я хотел бы открыть свой пузырь Messenger, если он установлен, конечно,

Итак, что сработало для меня:

messengerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String messengerUrl ;
                if (isMessengerAppInstalled()) {
                    Toast.makeText(ServiceClient.this, "messenger is installed , open app bubble", Toast.LENGTH_SHORT).show();
                    messengerUrl = "fb-messenger://user/475527699675914/";
                } else {
                    Toast.makeText(ServiceClient.this, "messenger is not installed , open messenger in browser", Toast.LENGTH_SHORT).show();
                    messengerUrl = "https://www.messenger.com/t/475527699675914/";
                }
                Intent messengerIntent = new Intent(Intent.ACTION_VIEW);
                messengerIntent.setData(Uri.parse(messengerUrl));
                startActivity(messengerIntent);


            }
        });

public boolean isMessengerAppInstalled() {
        try {
            getApplicationContext().getPackageManager().getApplicationInfo("com.facebook.orca", 0);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }