Escrevendo No Twitter Usando O PHP

Quem já não pensou em postar matérias no Twitter, Orkut, enviar mensagens por MSN e tantos outros Sistemas sem tanto esforço ou apenas usar um sistema pessoal para postar mensagens em tais sistemas?

Como todos já sabem, o Twitter é uma rede social que permite que seus usuários enviem mensagens de texto de até 140 caracteres.

Estudando sobre o assunto e testando soluções, criei um script prático, rápido, sem muita burocracia onde você pode usar para enviar suas mensagens ou implementar a um sistema próprio facilmente!

Abaixo estaremos mostrando em apenas 2 curtos scripts como você pode enviar as mensagens ao seu Twitter e em anexo postamos o ficheiro completo!

Página index.php

Bem… se você é programador e pretende “implementar” seu sistema com a função de envio de mensagem ao Twitter, nem vai precisar dessa página, pois preparei mesmo a página “index.php” para facilitar o uso de quem quer usar o sistema para envio de sua casa ou escritório com maior facilidade!

A utilização é simples: Basta apenas preencher os campos “usuario”, “senha” e “mensagem” (conforme a imagem a seguir).

Preenchendo os campos

Vamos analisar o ficheiro?


<?php

$usuario = $_GET["usuario"];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.:: WebMaster.PT :: Escrevendo Mensagem no Twitter ::.</title>
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="Envie uma mensagem para seu Twitter de modo fácil e rápido" />
<meta name="keywords" content="twitter,mensagem,instantânea,blog" />
<link rel="stylesheet" type="text/css" href="layout_blog.css">
<script type="text/javascript" src="<strong>curvycorners.js</strong>"></script>
<!-- JavaScript que arredonda os cantos da DIV para IE -->
<script type="text/JavaScript">
  window.onload = function() {
    var settings = {
      tl: { radius: 20 },
      tr: { radius: 20 },
      bl: { radius: 20 },
      br: { radius: 20 },
      antiAlias: true
    }

    var divObj = document.getElementById("DIV");

    curvyCorners(settings, divObj);
  }

</script>

<!-- Função que conta os caracteres do Textarea -->
<script type="text/javascript">
function contachars(){
    document.forms[0].caracteres.value = 140-document.forms[0].msg_twitter.value.length;
    if (document.forms[0].caracteres.value < 0){
    window.alert("Ultrapassou 140 caracteres, digite novamente! ");
    document.forms[0].msg_twitter.value="";
    document.forms[0].caracteres.value =140;
    return false;}
    else{
    return true;}
}
function checaform(){
if (document.forms[0].usuario.value == ""){
    window.alert("Não pode haver campos em branco")
    return false;}
if (document.forms[0].senha.value == ""){
    window.alert("Não pode haver campos em branco")
    return false;}
if (document.forms[0].msg_twitter.value == ""){
    window.alert("Não pode haver campos em branco")
    return false;}
}
</script>
</head>

<body>
<div id="box">
<div id="topo">
<span class="logo">
<?
if ($usuario != ''){
?>
<span class="usr"><a href="http://twitter.com/<?php echo"$usuario";?>" target="_blank">Clique aqui</a> para acessar o Twitter de: <?php echo"$usuario";?></span>
<?}?>
</span>
</div>
<div id="cadastro">
<form action="twitter_envia.php" method="post" name="form" onSubmit="return checaform()">
<input type="text" name="usuario" size="20" maxlength="30"/><span class="dados">Usuario do Twitter</span>
<input type="password" name="senha" size="20" maxlength="20"/><span class="dados">Senha do Twitter</span>
<textarea name="msg_twitter" class="msg_twitter" cols="35" rows="5" onKeyDown="contachars()" onKeyUp="contachars()"></textarea>
<input type="text" name="caracteres" size="3" maxlength="3" value="140" class="caracteres"/>
<div id="botao">
<input type="submit" name="submit" value="POST"/>
<input type="reset" name="reset" value="Limpar"/>
</div>
</form>
</div>
</div>
</body>
</html>

Após preencher todos os campos, o sistema enviará o ficheiro ao script “twitter_envia.php” (disponível a seguir).

Ele será dividido em 4 partes:

- Resgata variáveis da página anterior
- Se o Usuário e a Senha informado forem corretos, ele abrirá a porta 80
- Publica os dados informados
- Envia mensagem de confirmação e redireciona o ficheiro


<?
#Mensagem a ser enviada, assim como o usuário e senha resgatados da página anterior
$usuario = $_POST['usuario'];
$senha   = $_POST['senha'];
$msg     = $_POST['msg_twitter'];

$out = "POST http://twitter.com/statuses/update.json HTTP/1.1\r\n";
$out .= "Host: twitter.com\r\n";

$out .= "Authorization: Basic ".base64_encode ($usuario.':'.$senha)."\r\n";

$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: ".strlen ("status=$msg")."\r\n";
$out .= "Connection: Close\r\n\r\n";
$out .= "status=$msg";

$fp = fsockopen ("twitter.com", 80);
fwrite($fp, $out);
fclose($fp);

if ($fp){
?>
<script language="JavaScript">
alert('Mensagem enviada com sucesso !!!');
</script>
<meta HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?usuario=<?=$usuario;?>'>
<?
}
?>

Confirmação e Redirecionamento

Bem… após postar a mensagem e redirecionar o conteúdo ao seu conteúdo, veja que na página inicial, aparece o nome do usuário que postou o conteúdo e a mensagem “Clique Aqui”, lhe dando a opção de visitar a página junto ao Twitter (conforme imagem a seguir).

Retornando para a página inicial

Usando este sistema, fiz uma publicação em meu Twitter, Vamos verificar como ficou?

Verificando o cadastro na página

Prático, não?

Bem… de início minha intenção foi desenvolver em Zend FrameWorks ou Curl (como vários desenvolvedores fazem por aí), mas ao criar esta solução, procurei ao máximo elaborar algo sem muita dificuldade, de forma que você pudesse usar em seu sistema no dia a dia.

Espero que esta matéria venha lhe ajude em algo! Se você gostou desta matéria ou tiver sugestões para as próximas publicações, poste abaixo seu comentário!

Escrevendo No Twitter Usando O PHP

Be Sociable, Share!

10 Comentários

  1. Infelizmente este método de acesso a API já está obsoleto. Recomendo que leia a documentação da API do twitter e estude OAuth.

  2. Se não me engano o Twitter daqui a alguns dias já não vai permitir o envio assim, mas sim apenas com OAuth.

  3. Olá! Obrigado pela vossa participação e colaboração. Gosto do espírito de comunidade. E não consigo verificar o código de todos os tutoriais publicados. Também confio no Quemuel. Vamos pedir ao Quemuel Aquino para rever o tutorial. Confirmo que código só vai funcionar até ao fim do mês. Publicaremos outro tutorial nos próximos dias. Um Abraço Rui Soares

  4. Deve ser bem práctico para algumas pessoas mas sou algo desconfiado no geral…é completamente seguro com a nossa password?

    • Olá! Antes de mais, este tutorial vai ter que ser actualizado. Portanto, se quiseres utilizá-lo, espera mais alguns dias. Até Segunda-Feira, um dos nossos programadores vai publicar um novo tutorial. A forma de comunicar com o API do Twitter utilizada neste tutorial vai deixar de ser suportada pelo Twitter no fim do mês. Acontece. O Quemuel Aquino, que escreveu o tutorial, é programador. Já tinha utilizado este código antes num projecto dum cliente. Quando escreveu o tutorial usou esse código. Não verificou na documentação do Twitter se tinha ocorrido alguma actualização. Teve o cuidado de testar e estava a funcionar. Em relação à segurança deste ou doutros tutoriais, posso escrever o seguinte: 1. O código é quase sempre publicado no próprio artigo e há leitores que são programadores. Não deixariam de comentar sobre isso. 2. Os autores que contribuem para o webmaster.pt são pessoas em que confiamos. Conhecemos o currículos deles. E não são pessoas mal intencionadas. 3. Eu próprio verifiquei o código deste tutorial depois de ter lido alguns comentários sobre o OAuth e o código está limpo. 4. Prezamos MUITO a segurança. Sou gerente duma empresa de hospedagem web que aloja milhares de domínios. E a segurança faz parte do código genético do nosso trabalho. A privacidade dos nossos clientes é SAGRADA. Isso também vale para este blogue. Por fim, a cautela é útil… Fazes bem em ser cauteloso. Eu costumo dizer que a confiança só aparece e é cultivada no conhecimento da outra pessoa com que nos relacionamos, seja numa relação profissional, social ou pessoal. Isso também vale neste contexto. Um Abraço Rui Soares

    • Bom Dia! Estiver a ler sobre este assunto e a autenticação através de oAuth, que será o método que irá substituir a autenticação básica que consta deste tutorial, é mais segura, na perspectiva da própria programação e no caso dum twitter client como o hootesuite, onde temos que colocar a nossa password numa aplicação de terceiros. Um Abraço Rui Soares

  5. Caroline Keller

    Eu testei e gostei. Muito prático!

    Não sei se essa versão vai realmente deixar de funcionar, mas seja como for vou esperar pela próxima edição!

    Estou gostando muito das edições deste autor! Muito bem explicada.

    Carol

  6. O twitter adiou a morte do Basic Authentication (ver: http://www.countdowntooauth.com/ ) para dia 31 de Agosto de 2010.

    Cito:
    "Just to review what will be happening: starting on August 16th, the rate limits on basic authentication will be reduced by roughly 10 calls/hour/day ending on August 31st. On the 31st, you won't be allowed to make any other basic authentication calls. In other words, if you don't do anything, you'll get more and more frequent rate limit errors as you approach August 31st. Starting on August 31st, any request using basic authentication will get a HTTP 403 response back."

  7. O Quemuel Aquino escreveu um tutorial sobre a autenticação oAuth: http://www.webmaster.pt/twitter-oauth-6367.html Fica pendente a substituição deste tutorial por outro que funcione com o oAuth.

  8. Igor Sena

    Parabéns, vc são demais e o site de vcs é um dos melhores que já encontrei, se o seu objetivo é passar o conteúdo de forma simples e clara, podem ficar tranquilos pois esse é o MELHOR SITE QUE EXISTE PRA SE APRENDER…

    Obrigado por existirem

Participa! Comenta...