26

最近のFacebook による別のメッセンジャー アプリへの移行の「推奨」と、Facebook アプリでサポートされている URL/URI スキームに関する質問への {非常に有益な!} 回答のフォローアップとして、私は、の Facebook メッセンジャー アプリのカスタム プロトコルfb-messenger://使用できます。

私が探していた機能は、数字の Facebook ID がわかっているユーザーとの FB メッセンジャー チャット ウィンドウを開くボタンをクリックする機能でした。これは、Facebook アプリ ( katana ) がデバイスにインストールされていない場合 (つまり、メッセンジャーのorcaのみ) にも機能する必要がありました。

目的のディープ リンク( ) のを見つけましたが、うまくいかなかったようです。FB では URI を時々改訂する傾向があることに気付きました。なぜなら、これらは一般に (私の理解する限りでは) 一般に公開されることは想定されていないためです。fb-messenger://user-thread/{user-id}

4

5 に答える 5

71

この情報の検索に失敗した後、独自のリストを作成することにしました。以下は、これまでに収集できたものと、いくつかの説明です。

これらはバージョン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

これらは、バージョン293.0.0.13.232 ( 2020 年 12 月 8 日) から追加されたものです。

fb-messenger://carrier_messaging/
fb-messenger://carrier_messaging//%s
fb-messenger://carrier_messaging_group/
fb-messenger://carrier_messaging_group//%s
fb-messenger://dialtone/switch_to_dialtone
fb-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/settings
fb-messenger://paypal_connect_fail/
fb-messenger://paypal_connect_success/
fb-messenger://settings/datasetting
fb-messenger-sametask://instant_games_contact_pick
fb-messenger-sametask://montage_mediapicker
fb-messenger-sametask://share
fb-messenger-sametask://threadsettings
fb-messenger-secure://accounts
fb-messenger-secure://accounts/triggersso
fb-messenger-secure://join_request
fb-messenger-secure://messagerequests
fb-messenger-secure://messagesearch
fb-messenger-secure://notification_to_account_switch
fb-messenger-secure://page_notification_direct_reply
fb-messenger-secure://page_rtc_notification_to_account_switch
fb-messenger-secure://rtccall/audio/%s
fb-messenger-secure://speakeasy_invite_list

以下は、このアプリでの目的がわからない URI スキームの一部です。

  • fb://- このスキームの可能な URI はこちらを参照してください
  • dialtone://
  • fbinternal://
  • fb-messenger-aol://
  • fb-messenger-assistant://
  • fb-messenger-lite://
  • fb-messenger-lite-secure://
  • fb-messenger-public://
  • fb-messenger-secure://
  • fb-work://

の調査fb-messenger://share(この投稿の古いバージョンから -無効である可能性があります):

  • 、 、 のいずれかの呼び出しStringExtraShareTypeあります。ShareType.inviteShareType.forwardShareType.regular
  • というオプションの(?)StringExtraがありますShareType.invitedUser
  • というオプションの(?)StringExtraがありますShareType.invitedUserDisplayName
  • というオプションの(?)StringExtraがありますShareType.inviteEntryPoint
  • というオプションの(?)StringExtraがありますShareType.invitesSentBroadcastAction
  • (他にも数人)

の場合ShareType.forward

  • Extraタグ"attachment" OR を持つ があり"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:文字列配列
  • title:文字列
  • trigger:文字列

fb-messenger://user/{user-id}の代わりに を使用することで、必要な機能を実現できますfb-messenger://user-thread/{user-id}

{user-id}はユーザーのグローバル数値 ID (例: Zuck it's4 )であり、ユーザー名 (例: Zuck it'shttps://www.facebook.com/zuck"entity_id" ) に対応する html ドキュメントを解析し、見つかった を抽出することで取得できます (2015 年 11 月現在)。中身。

私の最新のテストによると、通常は開発者が使用できる ID であるアプリ スコープのユーザー IDは、これには機能しません。

以下は、既知のユーザー名のグローバル ID を抽出する python3 スクリプトです (クレジット: 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 によって禁止される可能性があることにも注意してください。

于 2014-08-24T00:06:35.693 に答える
3

これは単にリンクを共有するだけです

<a href="fb-messenger://share?link=encodedLink"></a>
于 2016-09-21T15:04:14.440 に答える
1

遅いことはわかっていますが、他の人に役立つことを願っています

私の場合、もちろんインストールされている場合は、ページのメッセンジャーバブルを開きたいと思いました

だからここで私のために働いた:

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;
        }
    }
于 2019-10-03T13:09:27.193 に答える