O primeiro passo é acessar a pagina Twitter Developers e clique em Register an app, efetue o login com a conta que realizará o post e preencha os dados.
Os campos abaixo devem ser preenchidos da seguinte forma:
Application Type: Browser
Default Access type: Read-only O certo é Read & Write (obrigado Gustavo)
Ao finalizar o cadastro o sistema criara o consumer_key e consumer_secret.
Depois clique em My acess token la barra lateral direita para pegar o: oauth_token e oauth_token_secret.
O proximo passo é baixar a biblioteca oauth.
Depois só adpatar seu codigo ao exemplo:
//inclua o arquivo twitteroauth.php baixado
include(“twitteroauth/twitteroauth.php”);
//digite os deus dados
$consumer_key = “xxx”;
$consumer_secret = “xxx”;
$oauth_token = “xxx”;
$oauth_token_secret = “xxxx”;
//mensagem do post
$msg=”Retirado de http://www.dicastech.net”;
$conn = new TwitterOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);
if(!$conn) {
echo “Erro na conexão”; die();
}
$r= $con–>post(‘statuses/update’, array(‘status’ => $msg));
echo “Postado com sucesso”;
?>
Pessoal, a página está com erro… poderia consertar pra ver o código ?
Olá pessoal!
Depois de resolver todos os probleminhas comentados por vocês, o último problema que encontrei o não envio do tweet. Consegui resolver mududando alguns parâmetros. Não me perguntem o que são porque eu não sei, mas funcionou rs
$r = $conn->post(‘https://api.twitter.com/1.1/statuses/update.json’, array(‘status’ => ‘aqui vem o seu tweet’, ‘source’=> ‘my source’, ‘include_entities’ => TRUE, ‘lang’ => ‘de’));
Existe alguma exigência nas configurações devem do servidor?
Funcionou perfeitamente, depois de apanhar muito por causa dos caracteres estranhos que vieram ao copiar. Logo de cara eu corrigi as aspas, mas continuou dando o tal citado erro dizendo que a função post não existe.
Reescrevi o código e funcionou.
Voltei ao código copiado para descobrir a diferença entre os dois.
Descobri que o problema não dava pra ser percebido só olhando… era o “-” do “->” do “$conn->post”. Era um traço mas não era o “menos”, não sei o que era, só sei que apaguei ele e coloquei denovo e funcionou.
Joia amigo, com algumas adaptações funcionou perfeitamente!
Só para dar uma ajuda para o pessoal, a autenticação só ocorre se você estiver com seu script hospedado em um servidor porque em localhost não funciona!
Cara, tentei aqui, não está enviando o tweet, fala que enviou mas não tem nada lá…
atualize o post pois parece que o método já não é esse mais né?
Amigos,
Ao fazer algumas perguntas, descobri que esse erro se trata de uma instabilidade do próprio Twitter.
Vejam a resposta de um dos desenvolvedores:
“The “Could not authenticate with OAuth” error means the oauth_token and oauth_secret are no longer valid. Earlier today we had some similar reports saying the values copied directly from the “Your access token” section of this site were not working.
We’re investigating this at the moment.”
Agora é aguardar.
Abraços
Ao verificar mais detalhadamente, a autenticação do Twitter não está validando mais minhas credenciais, apesar de estar tudo igual a minha conta criada.
Descobrindo algo, compartilho com vocês.
Abraço!
Olá amigo.
Parabéns pelo post.
Com algumas correções funcionou corretamente, com um detalhe apenas, só fez um post, twittou apenas uma vez.
Experimentei fazer um try catch para ver se retorna algum erro, mas aparentemente está indo sem excessões.
Sabe o pq disso?
Obrigado mais uma vez.
Olá Senhores,
Obrigado pelo tutorial foi muito útil.
Para tentar resolver alguns problemas aqui comentados tentem o seguinte:
1) Notem que o objeto criado está como $conn e o usado está como $con. Logo ele nunca vai achar o objeto;
2) Mesmo arrumando isso ele continuou aqui não achando o post() foi quando notei que ao copiar o código, alguns caracteres diferentes como ” ” e o – (usando no ->) não vieram corretamente.
Dicas ao autor:
– Colocar o código fonte em utf8 para download;
– Arrumar $conn;
Qualquer dúvida estou a disposição.
Até.
Não faz mesmo diferença mesmo, eu inclui:
include(“twitteroauth/twitteroauth.php”);
include(“twitteroauth/oauth.php”);
Cannot redeclare class OAuthException
será pelo fato de estar ter baixado ela com o nome : OAuth.php
se eu colocar oauth.php, faz diferença?
Mas você ajudou muito, obrigado, consegui fazer o mesmo só que usando o código da INDEX.PHP, da biblioteca que você indicou.
FICOU ASSIM:
//RECEBE POST DE UM FORMULÁRIO
$msg = $_POST[‘msg’];
echo “Texto Enviado: “;
echo $msg;
session_start();
require_once(‘twitteroauth/twitteroauth.php’);
require_once(‘config.php’);
if (empty($_SESSION[‘access_token’]) || empty($_SESSION[‘access_token’][‘oauth_token’]) || empty($_SESSION[‘access_token’][‘oauth_token_secret’])) {
header(‘Location: ./clearsessions.php’);
}
$access_token = $_SESSION[‘access_token’];
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token[‘oauth_token’], $access_token[‘oauth_token_secret’]);
$content = $connection->get(‘account/verify_credentials’);
// a mensagem ao TWITTER
$connection->post(‘statuses/update’, array(‘status’ => “$msg”));
O erro:
PHP Fatal error: Call to undefined function post()
Quer dizer que a função post() não existe, essa função está dentro da biblioteca oauth, ou seja você não incluiu ela corretamente
Foi cortado o post:
include(“twitteroauth/twitteroauth.php”);
$consumer_key = “XXXXXXXXXXXXXXXXXXXXX”;
$consumer_secret = “XXXXXXXXXXXXXXXXXXXXX”;
$oauth_token = “XXXXXXXXXXXXXXXXXXXXX”;
$oauth_token_secret = “XXXXXXXXXXXXXXXXXXXXX”;
$msg = “Testando Componente de post automatico”;
$conn = new TwitterOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);
if(!$conn) {
echo “Erro na conexão”;
die(); }
//ERRO nessa linha
$r= $con–>post(‘statuses/update’, array(‘status’ => $msg));
echo “Postado com sucesso”;
Olá na verdade eu não coloquei o codigo todo….
postei só a parte que está apresentando erro.
veja completo:
post(‘statuses/update’, array(‘status’ => $msg));
echo “Postado com sucesso”;
?>
Fabricio, faltou incluir a biblioteca oauth comentada no post.
//mensagem do post
$msg=”Testando Componente de post autmoatico”;
$conn = new TwitterOAuth($consumer_key,
$consumer_secret, $oauth_token, $oauth_token_secret);
if(!$conn) {
echo “Erro na conexão”;
die();
}
//erro aqui
$r = $con–>post(‘statuses/update’, array(‘status’ => $msg));
echo “Postado com sucesso”;
Apresenta o seguinte erro :
PHP Fatal error: Call to undefined function post()
Excelente artigo , porém para postar uma
msg a Default Access type deve ser do tipo:
Read & Write e não Read-only. Mas mesmo assim obrigada!!!!
pri voce que torce para o sao paulo nao esta com nada mas o yudi ele e um gato e ainda torce para o corinthias e voce fala a verdade voce gosta do yudi nao gosta e voces dois nao estao namorando e se voce estiver voce me responde agora ta te adoro beijos
Sem o codigo completo, não tem como ajudar galera =(
O Exemplo postado foi testado e inclusive está em uso.
Mesma coisa, fala que foi postado com sucesso mas não manda nada par ao twitter.
post(‘statuses/update’, array(‘status’ => $msg));
echo “Postado com sucesso”;
?>
Cole seu codigo aqui!
Por favor, será que pode me ajudar,
Ele executou tudo ok,
porém nao postou nada no twitter.
Agradeco a atencao!
usa a função urlencode() e utf8_encode()
Olá
Deu certinho…. só encontrei problema para postar textos com acento… tem alguma solução?
Pedro, pra postar na própria conta do usuário eu consigo fazer assim ó:
http://twitter.com/home?status=Teste
E aí vai publicar a palavra Teste no Twitter da pessoa. O foda é que vai abrir a janela do Twitter e cai na tela do perfil da pessoa com o recado lá pra pessoa enviar. Ou seja, ela pode não enviar! Me manda um email aí pra conversarmos melhor…
Vai sempre para sua conta!
Existe uma forma que vai pela propria conta do usuário, mais é outro esquema que ainda não sei direito!
Sim, coloquei o OAuth certinho…
E outra coisa, uma dúvida:
Eu tenho um blog. Os visitantes, ao deixarem os comentários, poderão clicar no botão “Twittar esse comentário”.
Nesse caso, o twitt vai sempre para a minha conta?? Ou pra conta do usuário??
Obrigado pela resposta anterior!!
vc colocou no diretorio oauth?
Cara… o meu tbm não deu certo… Dá erro na linha 116 do OAuth.php: “Fatal error: Call to undefined function: hash_hmac() in C:apache2triadhtdocsscriptsOAuth.php on line 116 “
Verifique se você colocou as variaveis certas:
$consumer_key = “xxx”;
$consumer_secret = “xxx”;
$oauth_token = “xxx”;
$oauth_token_secret = “xxxx”;
E se o include:
include(“twitteroauth/twitteroauth.php”);
Está na pasta certa.
Hey cara te mandei um email é que nao tou conseguindo mandar nada para o twitter aparece postado com sucesso so que nao manda nada! leia o email que lhe mandei! vlw