Acho que você tem dois problemas aqui:
-
Ter o conteúdo "indexado" para a caixa de diálogo de compartilhamento do Facebook ou compartilhamento direto de URL no FB
-
Permitir que os usuários acessem o site protegido se clicarem no link compartilhado.
As soluções que eu sugiro são:
- Verificando a string do User Agent. O FB usará uma string de agente que contém
facebookexternalhit/1.1
Esteja ciente de que isso também pode ser facilmente forjado por outras partes. - Verificando se o referenciador contém
www.facebook.com
se os usuários chegarem ao seu site sem autenticação
Ver