Devido à aposentadoria da API 1.0 do Twitter em 11 de junho de 2013 , o script abaixo não funciona mais.
// Create curl resource
$ch = curl_init();
// Set url
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/myscreenname.json?count=10");
// Return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// Close curl resource to free up system resources
curl_close($ch);
if ($output)
{
$tweets = json_decode($output,true);
foreach ($tweets as $tweet)
{
print_r($tweet);
}
}
Como posso obter o user_timeline (status recentes) com o menor código possível?
Encontrei o seguinte: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline, mas recebo o seguinte erro:
"{"errors":[{"message":"Could not authenticate you","code":32}]}"
Existem muitas classes por aí, mas depois de tentar várias, nenhuma delas parece funcionar por causa dessas atualizações no Twitter, e algumas delas são classes bastante avançadas, com muitas funcionalidades que eu realmente não preciso.
Qual é a maneira mais simples / mais curta de obter os status recentes de usuário com PHP?
Respostas:
Então você quer usar a API do Twitter v1.1?
Nota: os arquivos para estes estão no GitHub .
A versão 1.0 em breve será preterida e solicitações não autorizadas não serão permitidas. Então, aqui está um post para ajudá-lo a fazer exatamente isso, juntamente com uma classe PHP para facilitar sua vida.
Você precisa visitar o site oficial do desenvolvedor do Twitter e se registrar para obter uma conta de desenvolvedor. Esta é uma etapa gratuita e necessária para fazer solicitações para a API v1.1.
O que? Você pensou que poderia fazer solicitações não autenticadas? Não com a API v1.1 do Twitter. Você precisa visitar http://dev.twitter.com/apps e clicar no botão "Criar aplicativo".
Nesta página, preencha os detalhes que desejar. Para mim, isso não importava, porque eu só queria fazer um monte de solicitações de bloqueio para me livrar dos seguidores de spam. O ponto é que você terá um conjunto de chaves exclusivas para usar no seu aplicativo.
Portanto, o objetivo de criar um aplicativo é fornecer a si mesmo (e ao Twitter) um conjunto de chaves. Esses são:
Há um pouco de informação aqui sobre para que servem esses tokens.
OAuth solicita alguns tokens. Então você precisa gerá-los para você.
Clique em "criar meu token de acesso" na parte inferior. Então, depois de rolar para o final novamente, você terá algumas chaves recém-geradas. Você precisa pegar as quatro chaves anteriormente identificadas nesta página para suas chamadas à API. Anote-as em algum lugar.
Se você quiser fazer um uso decente dessa API, precisará alterar suas configurações para Leitura e gravação se estiver fazendo algo diferente da recuperação de dados padrão usando solicitações GET .
Escolha a guia "Configurações" na parte superior da página.
Dê ao seu aplicativo acesso de leitura / gravação e clique em "Atualizar" na parte inferior.
Você pode ler mais sobre o modelo de permissão de aplicativos que o Twitter usa aqui.
Combinei o código acima, com algumas modificações e alterações, em uma classe PHP, portanto é muito simples fazer as solicitações necessárias.
Isso usa o OAuth e a API do Twitter v1.1 e a classe que eu criei, que você pode encontrar abaixo.
Certifique-se de colocar as chaves que você obteve de seu aplicativo acima nos respectivos espaços.
Em seguida, você precisa escolher um URL para o qual deseja fazer uma solicitação. O Twitter possui a documentação da API para ajudá-lo a escolher qual URL e também o tipo de solicitação (POST ou GET).
Na documentação, cada URL indica o que você pode passar para ele. Se estivermos usando o URL "blocks" como o acima, posso passar os seguintes parâmetros POST:
Agora que você configurou o que deseja fazer com a API, é hora de fazer a solicitação real.
E para uma solicitação POST , é isso!
Para uma solicitação GET , é um pouco diferente. Aqui está um exemplo:
Exemplo de código final : para uma solicitação GET simples de uma lista dos meus seguidores.
Coloquei esses arquivos no GitHub com crédito para @ lackovic10 e @rivers! Espero que alguém ache útil; Eu sei que sim (usei para bloquear em massa em um loop).
fonte
php.ini
arquivo e também carregar os certificados da CA no seuphp.ini
arquivo usandocurl.cainfo = path\to\cacert.pem
. Você pode obter os certificados da CA aqui .Acesse dev.twitter.com e crie um aplicativo . Isso fornecerá as credenciais necessárias. Aqui está uma implementação que escrevi recentemente com PHP e cURL .
Isso pode ser executado na linha de comando:
fonte
screen_name
ecount
com essa abordagem? Tentei adicioná-lo à$url
variável, mas recebi o erro "Não foi possível autenticar você".curl_init()
. Eu olhei para alguns exemplos e eles parecem muito simples, diretos e exatamente como este código aqui ... Preciso instalar algo especial?O código colado por Rivers é ótimo. Muito obrigado! Sou novo aqui e não posso comentar. Gostaria apenas de responder à pergunta de javiervd (como você definiria o screen_name e contaria com essa abordagem?), Pois perdi muito tempo para descobrir isso. Fora.
Você precisa adicionar os parâmetros ao URL e ao processo de criação de assinaturas. Criar uma assinatura é o artigo que me ajudou. Aqui está o meu código:
fonte
buildAuthorizationHeader
função? Eu o implementei separadamente.Como indicado em outras respostas, crie um aplicativo do Twitter para obter o token, a chave e o segredo. Usando o código abaixo, você pode modificar os parâmetros de solicitação de um ponto e evitar erros de digitação e erros semelhantes (alterar a
$request
matriz nareturnTweet()
função).e depois é só ligar
returnTweet()
fonte
functions.php
arquivo no WordPress, coloquei<?php echo returnTweet(); ?>
um arquivo HTML e ele gera a palavra "Matriz" e nada mais.Obrigado Kris!
Ele funcionou para mim sem usar parâmetros para a consulta, sempre que eu usava mais de um parâmetro, ele me mostrava o erro: 32 Não foi possível autenticar você.
O problema para mim estava na codificação e comercial. Então, no seu código, onde está a seguinte linha
Eu adicionei a seguinte linha abaixo:
E funcionou usando dois ou mais parâmetros como screen_name e count.
O código inteiro fica assim:
Espero que ajude alguém com o mesmo problema que eu tive.
fonte
Essa pergunta me ajudou muito, mas não me levou a entender o que precisa acontecer. Esta postagem do blog fez um trabalho incrível ao me guiar por ela.
Aqui estão os bits importantes em um só lugar:
Simpatizo com todas as dores de cabeça, então aqui está um código para encerrar tudo:
fonte
Se você possui a biblioteca PHP do OAuth instalada, não precisa se preocupar em formar a solicitação.
Para mais informações, consulte Os documentos ou o exemplo deles . Você pode usar
pecl install oauth
para obter a biblioteca.fonte
Antes de tudo, queria agradecer a jimbo e ( sua biblioteca simples post / twitter-api-php).
Se você vai usar a API de pesquisa / tweets GET com a biblioteca PHP "twitter-api-php" (TwitterAPIExchange.php):
Primeiro, basta comentar a área de código "Executar uma solicitação POST e repetir a resposta".
Basta usar o código "Executar uma solicitação GET e repetir a resposta", repetir a resposta e alterar estas duas linhas:
para
(Mude
screen_name
paraq
, é isso :)fonte
Você precisará criar um "aplicativo" no Twitter (e uma conta no Twitter para fazer isso).
Em seguida, você precisa usar o OAuth para fazer uma solicitação autorizada ao Twitter .
Você pode usar o recurso GET status / user_timeline para obter uma lista dos tweets recentes.
fonte
HttpRequest()
função PHP para o passo 2? Existe a biblioteca PHP do TwitterOAuth de Abraham - github.com/abraham/twitteroauth - que também deve fazer isso, mas um exemplo de como implementá-lo não é realmente fornecido.Aqui está um breve resumo para obter um número especificado de tweets em sua linha do tempo. Basicamente, faz a mesma coisa que os outros exemplos, apenas com menos código.
Basta preencher as chaves e ajustar
$count
ao seu gosto:Este usa funções anônimas e em
file_get_contents
vez da biblioteca cURL. Observe o uso de um nonce de hash MD5. Todo mundo parece concordar com otime()
nonce, no entanto, a maioria dos exemplos na Web relativos ao OAuth usa algum tipo de string criptografada (como esta: http://www.sitepoint.com/understanding-oauth-1/ ). Isso faz mais sentido para mim também.Nota adicional: você precisa do PHP 5.3+ para as funções anônimas (caso seu servidor / computador esteja em alguma caverna da Guerra Fria e você não possa atualizá-lo).
fonte
No gerador de assinaturas , você pode gerar
curl
comandos do formulário:fonte
fonte
Graças a esta discussão, e especialmente budidino, porque seu código foi o que levou para casa. Só queria contribuir como recuperar os dados JSON de uma solicitação. Faça alterações na matriz de solicitação "// create request" como parte do código para executar solicitações diferentes. Por fim, isso exibirá o JSON na tela do navegador
fonte
Se for útil para qualquer pessoa ... No meu blog, implementei o seguinte código PHP para recuperar os últimos tweets, extrair os dados mais relevantes e salvá-los no banco de dados MySQL. Funciona porque eu peguei no meu blog.
A tabela "tweets" onde os armazena:
get_tweets.php:
A função para salvar os tweets:
fonte