Disqus – últimos 10 comentários vinculados a postagens.

Estou usando disqus com blogs gerados pelo jekyll. Depois de usá-lo por um tempo, comecei a procurar opções como “última caixa de comentários principais”.
Mas disqus não fornece widgets ou algo semelhante. Então comecei a brincar com a API disqus. Eu queria fazer isso no site do cliente com jsonp porque gerar blog a cada 5 minutos não é uma boa opção.

Uso

  1. A primeira coisa que você precisa fazer é registrar o aplicativo para uso de api http://disqus.com/api/applications/ . Este é o lugar onde você obtém a chave pública, a chave secreta e todas essas coisas.

    Lembre-se de definir corretamente Domainsporque sem isso suas jsonpsolicitações não vão funcionar.

  2. Prepare a configuração. Estou usando apenas um objeto global (como namespace) e estou escrevendo configurações como:

    var app = (function (parent) {
    parent
    .settings = {
    api_key
    : "API_PUBLIC_KEY",
    forum
    : "DISQUS_SHORT_NAME",
    limit
    : "HOW_MANY_COMMENTS_YOU_WANT"
    };

    return parent;
    })(app || {});
  3. Obter comentários é fácil. Precisamos apenas fazer a solicitação ao URL https://disqus.com/api/3.0/posts/list.jsonp( documentos api ) com os parâmetros da etapa anterior.

    Esta solicitação de API está retornando o objeto. Neste objeto, eu estava interessado no nome do autor e na url para postar. Infelizmente, o URL para postar não está vinculado a comentários. Mas existe threade este é o ID que podemos usar na próxima etapa para obter URLs para as postagens.

    Abaixo está o fragmento (com as informações de que preciso) do objeto retornado da API.

    {
    "response" : [
    {
    "thread" : "THREAD_ID",
    "author" : {
    "name" : "AUTHOR_NAME"
    }
    }
    ]
    }

    Para ver o retorno total da API, vá para a documentação da API para esta chamada de API

  4. Felizmente, obter as URLs dos comentários que recebi foi bem fácil. Eu só tive que fazer outra chamada de API para URL ( documentos api ) com dados:https://disqus.com/api/3.0/threads/list.jsonp

    {
    api_key
    : app.settings.api_key,
    thread
    : [ARRAY_OF_THREAD_IDS]
    }

    Abaixo está o fragmento (com as informações de que preciso) do objeto retornado da API.

    {
    "response" : [
    {
    "link" : "THREAD_ID"
    }
    ]
    }
  5. Combine esses dados e exiba-os.

Ressalvas

A API Disqsu tem limitações, portanto, usar esse método em blogs populares pode ser problemático (não sei quais são os limites para contas pagas).

Usei jQuery com e modernizr (porque é dependência do plug-in de cache localstorage) para fazer menos solicitações.jquery-ajax-localstorage-cache