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
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
Domains
porque sem isso suasjsonp
solicitações não vão funcionar.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 || {});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
thread
e 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
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"
}
]
}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