Postando no Twitter via PHP, com nova autenticação do twitter oauth


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”; ?>

34 Comments

  1. 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’));

  2. 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.

  3. 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!

  4. 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é?

  5. 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

  6. 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.

  7. 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é.

  8. 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”));

  9. 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

  10. 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”;

  11. //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()

  12. 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!!!!

  13. 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

  14. 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…

  15. 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!!

  16. 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 “

  17. 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.

1 Trackback / Pingback

  1. Tweets that mention Postando no Twitter via PHP, com nova autenticação do twitter oauth | Coisas Úteis -- Topsy.com

Leave a Reply

Seu e-mail não será publicado.


*