web-dev-qa-db-ja.com

Facebook MessengerのカスタムURIスキーム

Facebookが最近の「 encouragement 」を別のメッセンジャーアプリに移行すること、および{非常に有益な!}へのフォローアップとして考えると、 サポートされているURL/URIスキームに関する質問への回答Facebookアプリ 、Facebookメッセンジャーアプリに関する情報 カスタムプロトコル offb-messenger://が利用可能です。

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

望ましい 深いリンクfb-messenger://user-thread/{user-id})、しかしそれはうまくいかないようでした。 FBはURIを時々改訂する傾向があることに気付きました。URIは一般に公開されていないはずだからです(私の知る限り)。

21
Dev-iL

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

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

このアプリの目的がわからないURIスキームを次に示します。

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

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

  • ShareType.inviteShareType.forwardShareType.regularであるStringExtraというShareTypeという名前があります。
  • オプション(?)StringExtraというShareType.invitedUserがあります。
  • オプション(?)StringExtraというShareType.invitedUserDisplayNameがあります。
  • オプション(?)StringExtraというShareType.inviteEntryPointがあります。
  • オプション(?)StringExtraというShareType.invitesSentBroadcastActionがあります。
  • (他のいくつか)

ShareType.forwardの場合:

  • "attachment"[〜#〜]または[〜#〜]"message"タグを持つExtraを持っています。
  • タグ"trigger"を持つExtraを持っています。

共有のExtraフィールドIntent(タグ:type):

  • Android.intent.extra.TEXT文字列
  • attachmentパーセル可能
  • messageパーセル可能
  • page_name文字列
  • page_post_id文字列
  • page_targetLong
  • 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_recipientsStringArray
  • title文字列
  • trigger文字列

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

{user-id}はユーザーのグローバル数値ID(例 Zuckの場合は4 )、これは(2015年11月現在)ユーザーのユーザー名に対応するhtmlドキュメントを解析することで取得できます(例 Zuckの場合https://www.facebook.com/zuck )そして、内部にある"entity_id"を抽出します。

私の最新のテストによると、通常開発者が利用できるIDである app-scoped user IDs は機能しません!

以下は、既知のユーザー名のグローバル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でアプリを禁止する である可能性もあります。

58
Dev-iL

現在のバージョンのFacebookでAndroid自動的にユーザーにアプリを開くか、chromeドメインwww.messenger.comを使用するときに開くように要求します。このURLへのユーザーとfacebookがそれを処理するようにします

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);
7
SirNarsh

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

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

Androidでchromeインテントを使用する:インストールされている場合、以下のコードはFBメッセンジャーを開きます。それ以外の場合、フォールバック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