Workplace from Meta 即將停用。在 2025 年 8 月 31 日之前,您將可繼續使用 Workplace。若需瞭解詳細資訊,請參閱我們的使用說明。
驗證預覽可讓您在 Workplace 上正確預覽內容。其必須以 Workplace 所需的格式支援驗證預覽中繼資料,以便在分享內容的網址時,Workplace 可以擷取該中繼資料並建立預覽。此程序通常稱為連結展開。
雖然 Facebook 可以經由開放社交關係圖通訊協定和 Facebook 網路爬蟲取得中繼資料,展開公開網址,但由於私密網址較常分享至 Workplace,因此不適用此程序。有人將私密網址分享至 Workplace 時,系統會向您定義的回呼網址發出 Webhook,而您將能使用描述分享者網址的中繼資料裝載加以回覆,以顯示連結預覽。

每位用戶在 Workplace 查看分享網址時,這個程序會重複執行,讓您能針對各個用戶控制預覽能見度。
驗證 Workplace 允許用戶在 Workplace 上安全、輕鬆地分享資訊,同時尊重來源內容的隱私。透過支援驗證預覽,您可以確保在 Workplace 上以安全的隱私感知方式正確預覽內容。
為了啟用驗證預覽,您需要針對以下項目配置應用程式:
我們會在多種情況下向供應商傳送要求:
在上述任何一種情況下,系統都會將 Webhook 以 POST 要求傳送,格式如下:
{
"object": "link",
"entry": [
{
"time": int,
"changes": [
{
"field": "preview",
"value": {
"community": {
"id": string,
},
"user": {
"id": string,
},
"link": string,
}
}
]
}
]
}
此承載包含以下欄位:
| 欄位名稱 | 說明 |
|---|---|
| Webhook 主題。此內容一律為 |
| 要求清單,一律為一個。 |
| 傳送要求的時間。 |
| 此要求中的變更清單,一律為一個。 |
| Webhook 欄位,一律為 |
| 包含要求內容的實際物件。 |
| 觸發要求的用戶社群。 |
| 觸發要求的用戶。 |
| Workplace 嘗試顯示的連結,與應用程式配置的網域和正規表示式相符。 |
POST /callback HTTP/1.1
Host: third-party.com
Accept: application/json
Content-Type: application/json
User-Agent: Webhooks/1.0 (https://fb.me/webhooks)
X-Hub-Signature: sha1=bf3102e52efd0fd4bd26277030aa180d7b5cf587
...
{
"object": "link",
"entry": [{
"time": 1501515097793,
"changes": [{
"field": "preview",
"value": {
"community": {
"id": "138169208138649"
},
"user": {
"id": "88575656148087"
}
"link": "https://company.third-party.com/document-about-this"
}
}]
}]
}
當您收到 Webhook 要求時,需要以特定回應格式提供中繼資料承載:
{
"data": [
{
"link": string,
?"canonical_link": string,
?"title": string,
?"description": string,
?"icon": string,
?"download_url": string,
"privacy": 'organization' | 'accessible' | 'inaccessible',
?"type": 'document' | 'folder' | 'task' | 'link',
?"additional_data": [
{
"title" => string,
"format" => 'text' | 'date' | 'datetime' | 'user',
"value" => string | number,
?"color" => 'blue' | 'green' | 'yellow' | 'orange' | 'red',
},
],
}
],
?"linked_user": boolean
}此承載應包含以下欄位:
| 欄位名稱 | 說明 |
|---|---|
| 用戶可用的項目集合,如果應用程式選擇不展開此用戶的該連結,則此欄位可為空白。 |
| 布林值欄位,表示第三方是否知道用戶 - 如果設定為 |
| 此項目的不重複識別連結,必須與要求中的連結相符。 |
| 此內容的標準網址表示。如果與連結不同,系統會將此內容與標準內容建立關聯,以方便查詢相關分享內容。 |
| 此項目的標題,為必要欄位,但若項目的 privacy 設為 inaccessible 時則除外。 |
| 將以格式化預覽顯示的簡短項目說明。 |
| 此內容的資產,適用於 Workplace 顯示內容圖示的位置。其必須是可公開存取的網址。為獲得最佳效果,資產應為 16px 正方形。 |
| 網址,Workplace 可從此下載項目的 PDF、JPEG 或 PNG 表示,並將其轉換為圖像貼文。針對 |
| 代表物件的隱私,可為 |
| 此欄位可為 |
| 將以格式化預覽顯示的中繼資料集合。系統將忽略 |

HTTP/1.1 200 OK
Content-Type: application/json
X-Hub-Signature: sha1=b5a6f32f084100ae5b355174b9bb8398f5fbe983
...
{
"data": [
{
"link": "https://taaskly.herokuapp.com/task/4",
"title": "Launch Workplace Integration for F8",
"privacy": "organization",
"type": "task",
"additional_data": [
{
"title": "Owner",
"format": "user",
"value": "319922278498384"
},
{
"title": "Created",
"format": "datetime",
"value": "2018-02-28T03:35:40.827Z"
},
{
"title": "Priority",
"format": "text",
"value": "high",
"color": "red"
}
]
}
],
"linked_user": true
}
無論我們是否要求現有和後續用戶進行用戶驗證,隱私模式皆可決定能見度。
organization:用戶可查看,不需要用戶驗證accessible:現有用戶可查看,但其他人可能需要用戶身分映射。inaccessible:用戶不可查看若要在連接預覽中新增更多資訊,您最多可以傳送三個額外資料項目。額外資料項目是由一組索引鍵值元素組成。但是,該值可採用不同的方式進行格式化。
目前支援四種不同的格式:
text:將以原來的樣式顯示,該值必須為字串。若是此格式,額外資料也可以包含 color 屬性,其值必須為 blue、green、yellow、orange 或 red 其中之一。如有設定,將顯示該顏色的值作為背景。date:將值解析為不含時間的 ISO-8601 日期格式,並在不含時間指示的情況下顯示。datetime:將值解析為包含時間和時區的 ISO-8601 日期格式,並在用戶時區中使用時間指示顯示。user:將該值解析為用戶編號並顯示用戶名稱。如果設定額外資料,系統會忽略 download_url 參數。
如果文件的隱私模式標記為 organization 或 accessible,並且提供下載網址,我們將傳送額外要求來下載資料。
GET /download/super-fancy-document HTTP/1.1 Host: provider.com Accept: <some mime types> User-Agent: Webhooks/1.0 (https://fb.me/webhooks) X-Hub-Signature: sha1=bf3102e52efd0fd4bd26277030aa180d7b5cf587
Workplace 接著會取得此檔案並將其轉換為相片,以製作多張相片的貼文。
如上所述,提供驗證預覽需要某些身分映射。身分映射可控制 Workplace 用戶是否有權限查看正在預覽的內容,並確保在 Workplace 上遵守內容的存取規則。
最簡單的身分映射形式是組織範圍映射,其中 Workplace 社群的成員已足以允許在 Workplace 上向用戶顯示預覽。當預覽連結公司範圍 Intranet 或整個公司可查看所有物件(或至少其中繼資料)的任何服務時,此情況很常見。
在 Workplace 社群中安裝整合後,您就可以使用安裝時所擷取的存取權杖,經由 /community 端點檢查社群編號。您可以將此社群編號與權杖一起儲存,並將其映射至服務內的用戶或組織識別碼。如此可在 Workplace 社群和服務中的組織之間建立映射。
接著,當回覆驗證預覽 Webhook 要求時,您就可以檢查 Webhook 承載的社群編號是否與組織連結的社群編號相符,然後決定傳回中繼資料承載是否安全。將該承載的隱私標記為 ORGANIZATION 時,可確保我們不需為該 Workplace 社群中的每個用戶傳送額外的 Webhooks。
如果需要更多權限資料粒度,您可以支援每用戶映射,確保您可以選擇是否個別向 Workplace 上的每個觀看者顯示中繼資料。Workplace 會在每個 Webhook 承載中傳送一個用戶編號,用於驗證預覽。若要支援每用戶映射,您需要知道系統中的哪個用戶記錄映射至 Webhook 承載中傳送的 Workplace 用戶編號。
如果這是您第一次遇到給定的 Workplace 用戶編號,可以使用設定為 false 的 linked_user 布林值欄位進行回覆。如此將指示 Workplace 顯示「啟用預覽」按鈕,提示用戶連結其帳號。

按下該按鈕後,Workplace 將開啟一個對話方塊,指向您定義的帳號連結端點,您可以在這裡驗證服務中的用戶連線階段。Workplace 將經由 POST 要求開啟此網址,並傳遞一個簽署要求參數,內容包含現有用戶編號和社群編號。
POST https://www.example.com/account_linking?redirect_uri=https%3A%2F%2Ffoxfabrics.facebook.com%2Flink_complete HTTP/1.1
Host: foxfabrics.third-party.com
Origin: http://www.facebook.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/57.0
...
signed_request=238fsdfsd.oijdoifjsidf899
承載中有一個 signed_request 參數,內容包含有關此用戶的資訊。此要求可依下列方式解碼:
承載包含以下欄位:
{
"algorithm": "HMAC-SHA256",
"user_id": "88575656148087",
"community_id": "138169208138649"
}
此時,您在服務中將擁有 Workplace 用戶編號和社群編號,以及經過驗證的用戶連線階段,並且能夠在服務中將此用戶的 Workplace 編號記錄在其編號旁邊。完成後,您應重新導向至原始要求所提供的網址,作為查詢參數 redirect_uri。
GET {$redirect_uri} HTTP/1.1
Host: foxfabrics.facebook.com
User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/57.0
Referer: https://www.example.com/account_linking
...
接著,Workplace 將識別身分映射已完成,並嘗試再次要求驗證預覽中繼資料。此時,您可以將 linked_user 設為 true 進行回覆,並提供必要的中繼資料。
每當無法識別的用戶首次嘗試預覽一段內容時,整個往返程序應只發生一次。完成身分映射後,後續預覽應該能夠繞過此往返程序。
No, Workplace Authenticated Previews do not have the same performance requirements or unsubscribe behavior as Messenger Platform webhooks.
So that people using Workplace have a good experience, the full HTTP roundtrip should take less than 5 seconds as measured from the Workplace side (i.e., the HTTP client side).
No, these requests are one-time only.
For estimating / expectation standpoint you can plan around this behavior. You may observe some differences in practice due to retries or race conditions.
No, Workplace will not automatically disable a link webhooks subscription.