Posts tagged twitter

Classe php para postar no Twitter com encurtador de URL

Há algum tempo desenvolvi essa classe para postar no Twitter, e estudando a API do bit.ly fiz algumas alterações na classe para encurtar as urls antes de postá-las. A url que você passar dentro da mensagem será automaticamente encurtada. Ficou bem fácil de usar, espero que ajude alguém.
Não esqueça de mudar o “twitter_login” e “twitter_password” para seus dados do twitter, e o “bitly_login” e “bitly_key” para seus dados do Bit.ly. Se não possui conta no Bit.ly, acesse esse link para cadastrar-se: http://bit.ly/account/register?rd=/account/your_api_key . Você poderá acompanhar as estatísticas de cliques e popularidade dos links encurtados por você, é bem legal.

TwitMsg.php

<?php
class TwitMsg {

	var $msg;

	static $username = "twitter_login";
	static $password = "twitter_password";

	function __construct($msg)
	{
		$this->msg = utf8_encode($msg);
	}	

	function sendMsg()
	{

		$username = self::$username;
		$password = self::$password;

		$pos = strpos($this->msg,"http://");

		if ($pos !== false)
		{
			$aux = substr($this->msg,$pos);
			$split = explode(" ",$aux);
			$theUrl = $split[0];
			$small = $this->getSmallLink($theUrl);
			$this->msg= str_replace($theUrl,$small,$this->msg);
		}
		$message = urlencode($this->msg);

		$message = substr($message,0,140);
		$url = 'http://twitter.com/statuses/update.xml';

		$curl_handle = curl_init();
		curl_setopt($curl_handle, CURLOPT_URL, "$url");
		curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
		curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($curl_handle, CURLOPT_POST, 1);
		curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
		curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
		$buffer = curl_exec($curl_handle);
		curl_close($curl_handle);

		if (empty($buffer)) {
			return 0;
		} else {
			return 1;
		}

	}

	//bit.ly
	function getSmallLink($longurl)
	{
		$login = "bitly_login";
		$apiKey = "bitly_key";
		$url = "http://api.bit.ly/shorten?version=2.0.1&longUrl=$longurl&login=$login&apiKey=$apiKey&format=json&history=1";
		$result = file_get_contents($url);
		$obj = json_decode($result, true);
		return $obj ["results"] ["$longurl"] ["shortUrl"];
	}

}
?>

Para usar, é bem fácil:

<?php
include_once("TwitMsg.php");
$message = "Classe para postar no Twitter com encurtador de URL automático do bit.ly: http://www.erikafocke.com.br/php/classe-php-para-postar-no-twitter-com-encurtador-de-url/ por @erikaheidi";
$t = new TwitMsg($message);
if($t->sendMsg())
    echo "Mensagem postada com sucesso no twitter.";
else
   echo "Ocorreu um erro. Verifique se o login e senha do twitter estão corretos.";
?>

Pronto! Ao executar, a mensagem será postada no seu twitter, porém o link será automaticamente encurtado e você poderá acessar as suas estatísticas na sua conta do Bit.ly.

Função para usar a API do Bit.ly para encurtar urls no PHP

Eu nem sabia, mas é super fácil usar a api do Bit.ly para criar urls curtas. Excelente pra integrar com o seu site se você pretende utilizar o Twitter para divulgar links, por exemplo.
Neste exemplo, vamos ver como fazer isso no PHP.

Antes de mais nada, você precisa fazer um cadastro no bit.ly para obter um login e uma API KEY. Acesse: http://bit.ly/account/register?rd=/account/your_api_key

Agora vamos à função:

<?php

function getShortUrl($link)
{
    $apiLogin = "seulogin";
    $apiKey = "suaChave";
    $url = "http://api.bit.ly/shorten?version=2.0.1&longUrl=$link&login=$apiLogin&apiKey=$apiKey&format=json&history=1";
    $result = file_get_contents($url);
    $obj = json_decode($result, true);
    return $obj ["results"] ["$longurl"] ["shortUrl"];
}

?>

Para usar esta função, o seu servidor precisa aceitar a utilização da função “file_get_contents” com uma url externa. Caso tenha problemas, verifique a opção “allow_url_fopen” no seu php.ini, ela deve estar “On”.