O Workplace from Meta será descontinuado. Você poderá continuar usando o Workplace até 31 de agosto de 2025. Para saber mais, acesse nossa Central de Ajuda.
As prévias autenticadas mostram a visualização correta do seu conteúdo no Workplace. Isso implica oferecer compatibilidade com metadados de prévia autenticada em um formato esperado pelo Workplace; desse modo, quando os URLs do seu conteúdo são compartilhados, o Workplace pode buscar esses metadados e criar uma prévia. Esse processo normalmente é chamado de autenticação de link.
Embora o Facebook consiga obter metadados para autenticar URLs públicos por meio do protocolo Open Graph e do Rastreador do Facebook, não é possível realizar esse processo em URLs privados, que são compartilhados com mais frequência no Workplace. Quando alguém compartilha um URL privado no Workplace, um webhook é emitido para um URL de retorno de ligação que você definiu; assim, você poderá responder com uma carga de metadados descrevendo o URL da pessoa que está compartilhando para renderizar uma prévia do link.

O mesmo processo será repetido para cada pessoa que visualizar o URL compartilhado no Workplace, permitindo que você controle a visibilidade da prévia por usuário.
O recurso Autenticado para o Workplace permite que as pessoas compartilhem informações com segurança e facilidade no Workplace, de forma que respeite a privacidade do material de origem. Ao oferecer compatibilidade com as prévias autenticadas, é possível garantir que as prévias do seu conteúdo sejam exibidas corretamente no Workplace, com segurança e privacidade.
No Workplace, são compartilhados links para recursos internos das empresas, que só podem ser visualizados por determinadas pessoas. Por outro lado, no Facebook, as pessoas compartilham conteúdo público, como artigos de notícias ou publicações de blog.

Para que o Workplace gere uma prévia do conteúdo privado de uma empresa, alguns metadados precisam ser fornecidos. Como fornecedor, você pode escolher se deseja fornecer metadados para o visualizador atual no Workplace, embora ele precise de permissão para ver o conteúdo.
Este documento descreve os componentes para habilitar as prévias autenticadas, incluindo:
Para habilitar as prévias autenticadas, você precisará definir as seguintes configurações no app:
Enviaremos uma solicitação ao fornecedor em várias situações, por exemplo:
Nos cenários anteriores, um webhook será enviado como uma solicitação POST no seguinte formato:
{
"object": "link",
"entry": [
{
"time": int,
"changes": [
{
"field": "preview",
"value": {
"community": {
"id": string,
},
"user": {
"id": string,
},
"link": string,
}
}
]
}
]
}
Essa carga contém os seguintes campos:
| Nome do campo | Descrição |
|---|---|
| O tópico do webhook. Nesse contexto, sempre será um |
| Uma lista de solicitações, que será sempre exatamente uma. |
| A hora em que a solicitação foi enviada. |
| Uma lista de alterações nesta solicitação, que será sempre exatamente uma. |
| O campo do webhook, que será sempre |
| O objeto real que contém o contexto da solicitação. |
| A comunidade do usuário que disparou a solicitação. |
| O usuário que disparou a solicitação. |
| O link que o Workplace está tentando renderizar, que corresponde ao domínio e à expressão regular configurados pelo app. |
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"
}
}]
}]
}
Ao receber uma solicitação de webhook, você precisará fornecer uma carga de metadados em um formato de resposta específico:
{
"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
}Essa carga deve conter os seguintes campos:
| Nome do campo | Descrição |
|---|---|
| Uma coleção de itens disponíveis para o usuário. Esse campo poderá ficar vazio se o app optar por não autenticar o link para o usuário. |
| Um campo booliano indicando se a outra pessoa conhece o usuário. Se ele estiver definido como |
| Um link de identificação único para esse item, que deve corresponder ao link na solicitação. |
| Uma representação oficial do URL deste conteúdo. Se ela for diferente do link, este conteúdo será associado ao conteúdo oficial para facilitar a consulta dos compartilhamentos relacionados. |
| Um título deve ser atribuído para este item, exceto para os itens que tenham a privacidade definida como inacessível. |
| Uma breve descrição do item que será renderizada na prévia detalhada. |
| Um ativo deste conteúdo para locais onde o Workplace mostra um ícone do conteúdo. Ele deve ser um URL e deve estar acessível ao público. Para obter melhores resultados, o ativo deve ser um quadrado de 16 pixels. |
| Um URL a partir do qual o Workplace pode baixar uma representação em PDF, JPEG ou PNG do item para convertê-lo em uma publicação de imagem. Ele será ignorado para todos os tipos de objeto, exceto os tipos |
| Determina a privacidade do objeto. Pode ser |
| Pode ser do tipo |
| Uma coleção de metadados que serão renderizados na prévia detalhada. Este campo será ignorado para |

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
}
O modo de privacidade determina a visibilidade, ou seja, se precisaremos da autenticação para os usuários atuais e subsequentes.
organization: Visível para o usuário. Não é necessária autenticação do usuário.accessible: Visível para o usuário atual, mas o mapeamento da identidade pode ser necessário para outras pessoas.inaccessible: Não visível para o usuário.Para adicionar mais informações sobre uma prévia de link, você pode enviar até três itens de dados adicionais. Um item de dados adicionais é constituído por um conjunto de elementos de valores-chave, que pode ser formatado de diversas maneiras.
Atualmente, quatro formatos diferentes são compatíveis:
text: o valor será renderizado do modo como está, mas ele deve ser uma string. Para esse formato, dados adicionais também podem conter uma propriedade color que deve ser blue, green, yellow, orange ou red. Nesse caso, o plano de fundo será renderizado na cor definida.date: o valor será analisado como o formato de data ISO-8601 sem hora e será renderizado sem indicação de hora.datetime: o valor será analisado como o formato de data ISO-8601 com hora e fuso horário e será renderizado com indicação de hora no fuso do usuário.user: o valor será analisado como um ID de usuário, e o nome do usuário será renderizado.Se dados adicionais forem definidos, o parâmetro download_url será ignorado.
Se o modo de privacidade do documento estiver marcado como organization ou accessible e um URL de download estiver presente, enviaremos uma solicitação adicional para baixar os dados.
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
O Workplace converterá esse arquivo em fotos, ou seja, fará uma publicação com várias fotos.
Como mencionamos anteriormente, para fornecer prévias autenticadas, é preciso haver algum tipo de mapeamento de identidade. O mapeamento de identidade controla se um usuário do Workplace tem permissão para ver a prévia do conteúdo e garante o cumprimento das regras de acesso ao conteúdo no Workplace.
A forma mais simples de mapeamento de identidade é o mapeamento em toda a organização, em que a participação de uma comunidade do Workplace é suficiente para permitir que as prévias sejam mostradas aos usuários no Workplace. Isso acontece na exibição de prévias de links para a intranet de toda uma empresa ou de qualquer serviço cujos objetos (ou pelo menos seus metadados) sejam visíveis para toda a empresa.
Quando sua integração é instalada em uma comunidade do Workplace, a identificação da comunidade pode ser verificada por meio do ponto de extremidade /community, utilizando o token de acesso recuperado após a instalação. É possível armazenar esse número de identificação da comunidade com o token e associá-lo a um locatário ou identificador da organização dentro do seu serviço. Isso cria um mapeamento entre uma comunidade do Workplace e a organização no seu serviço.
Depois, ao responder a solicitações de webhook de prévias autenticadas, você poderá verificar se a identificação da comunidade da carga do webhook corresponde à identificação da comunidade associada à organização; assim, é possível decidir se é seguro retornar uma carga de metadados. Se a privacidade dessa carga for definida como "ORGANIZATION", não precisaremos enviar webhooks adicionais para cada usuário nessa comunidade do Workplace.
Se for necessário mais detalhamento para as permissões, você poderá oferecer compatibilidade com um mapeamento por usuário e, com isso, poderá escolher se deseja renderizar metadados para cada visualizador no Workplace. O Workplace envia uma identificação do usuário em cada carga de webhook para prévias autenticadas. Para oferecer compatibilidade com o mapeamento por usuário, você precisará saber qual registro de usuário no seu sistema é associado à identificação do usuário no Workplace enviado na carga do webhook.
Na primeira vez que você encontrar determinada identificação de usuário no Workplace, poderá responder com o campo booliano linked_user definido como false. Essa ação fará com que o Workplace mostre um botão Ativar prévia, solicitando que o usuário vincule a conta.

Quando o botão for pressionado, o Workplace abrirá uma caixa de diálogo para um ponto de extremidade de vinculação de conta definido; assim, você poderá validar a sessão do usuário no seu serviço. O Workplace usará uma solicitação POST para abrir esse URL e enviará um parâmetro de solicitação assinado, que contém o número de identificação do usuário atual e da comunidade.
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
Um parâmetro signed_request que contém informações sobre esse usuário estará presente na carga. Essa solicitação pode ser decodificada da seguinte forma:
A carga contém os seguintes campos:
{
"algorithm": "HMAC-SHA256",
"user_id": "88575656148087",
"community_id": "138169208138649"
}
Neste momento, você terá um número de identificação do usuário do Workplace e da comunidade, com uma sessão de usuário validada no seu serviço, e poderá registrar o número de identificação do Workplace para esse usuário, além da identificação dele no seu serviço. Após a conclusão, você deverá redirecionar para o URL fornecido na solicitação original como o parâmetro de consulta 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
...
Assim, o Workplace reconhecerá que o mapeamento de identidade está concluído e tentará solicitar novamente os metadados da prévia autenticada. Desta vez, você poderá responder com linked_user definido como true e fornecer os metadados necessários.
Essa ação de ida e volta deve acontecer apenas uma vez sempre que um usuário não reconhecido tentar ver uma prévia de um conteúdo pela primeira vez. Após a conclusão do mapeamento de identidade, as próximas prévias deverão ser capazes de contornar esse processo de ida e volta.
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.