Skip to content

Instantly share code, notes, and snippets.

@schleumer
Created February 17, 2016 17:28
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save schleumer/21a4ebbff3f8253df985 to your computer and use it in GitHub Desktop.
Save schleumer/21a4ebbff3f8253df985 to your computer and use it in GitHub Desktop.
Como usar as APIs de frontend do Facebook

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
    }
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment