Depois do Facebook dropar vários endpoints da GraphAPI e também dropar o FQL, eu comecei a estudar duramente os processos e todas as comunicações que o Facebook faz no frontend para poder usufruir de várias maneiras.
Não é complexo, na verdade é mais bagunçado do que complexo, as APIs não são uniformes nem na chamada nem nos resultados, então é bom sempre olhar direito.
O primeiro passo é você descolar a mais importante variável que é usadas em todas as chamadas,
que é o dtsg
ou fb_dtsg
(sabe lá deus o que isso quer dizer), na versão do website para
desktop(facebook.com
) ela fica num elemento que tem o id fb_dtsg
, na versão mobile
você tem que usar esse RegExp maneiro: /\{\"dtsg\"\:\{\"token\"\:\"(.*?)\"/
(eu tenho mania de "escapar" tudo).
Uma das URLs que uso bastante é a de threads, que vem da área do inbox, usei muito no meu aplicativo.
Para usar esse endpoint, tenha em mente essa URL: https://www.facebook.com/ajax/mercury/thread_info.php
,
os dados são enviados em POST
e são codificados pelo padrão comum de formulários e não em JSON!
essa URL recebe muitos parâmetros e a função dela é entregar mensagens, se você olhar no inspetor de rede verá que ela recebe muitos parametros, entretanto, a maioria é inútil e serve só para debug e tracking de informações.
Os parametros são:
{
"__a": 1, // WHY, FACEBOOK? Esse parametro é estritamente necessário em TODAS as chamadas
"client": "web_messenger",
"fb_dtsg": "aquele valor que a gente tirou lá em cima",
"messages": {
"user_ids": {
// aqui você pode mandar vários IDs de conversas/usuários
"id de um usuario ou conversa": {
"limit": 20 // é um valor padrão, você pode colocar o numero que quiser, mas tenha em mente de deixar o padrão
"offset": 0 // aqui você tem o offset da paginação das mensagens 0 é pagina 1, 20(limite por pagina ali de cima) é pagina 2 e assim por diante
"timestamp": 0 // aqui você coloca a unix timestamp ancora da paginação
}
}
}