Usando encurtador de URL do Google com PHP

Muito útil na hora de tuitar ou enviar um link para alguém é encurtar a URL. Como todos sabem que é um saco estressante ficar entrando no site do encurtador para fazer gerar o novo link. Então porque não gerar isso dinâmico para os visitantes do seu site ou blog ou seja lá o que você  utiliza .

##Atenção, essa a API foi descontinuada conforme link https://developers.google.com/url-shortener/v1/getting_started, o conteudo do post ficará disponível apenas por motivos de histórico

Iremos especificar na variável $url o endereço do webservice do Google que irá receber os nossos dados e gerar a URL encurtada

1
$url = 'https://www.googleapis.com/urlshortener/v1/url';

Todos os dados a serem enviados iremos jogar dentro de um array chamado $data. Nosso primeiro dado será a URL que iremos encurtar óbvio não?

1
$data['longUrl'] = 'http://sounoob.com.br/usando-encurtador-de-url-do-google-com-php';

Precisaremos da chave de segurança (API Key) para uso da API do Google, você poderá gerar em http://code.google.com/apis/console/. Sua chave deve ser algo como AIzaSyADeOnBiAo4iOWCjbdPDfXWTVzwwLrymie, agora é só jogar em nosso array.

1
$data['key'] = 'AIzaSyADeOnBiAo4iOWCjbdPDfXWTVzwwLrymie';

Como a API estará esperando os dados em json então usaremos a função json_encode para converter nossos dados para o formato correto.

1
$data = json_encode($data);

Agora que temos tudo que precisamos no formato correto, iremos usar o cURL para se comunicar com o Google.

Para isso iremos iniciar o cURL e informar a URL iniciada no começo.

1
$curl = curl_init($url);

Caso você não tenha o cURL ativo em seu servidor então ocorrerá o erro: Fatal error: Call to undefined function curl_init();

Vamos configurar o cURL para não verificar os certificados SSL do Google.

1
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

Como iremos receber dados de volta do Google então precisamos avisar ao cURL que precisaremos esperar uma resposta.

1
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

Como iremos transportar um json precisaremos definir isso também.

1
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type:application/json'));

Ultimo parâmetro é informar quais são os dados que serão enviados

1
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

Agora que está tudo configurado é hora de executar o cURL e gravar a resposta na variavel $data

1
$data = curl_exec($curl);

Finalizando o cURL

1
curl_close($curl);

Perfeito, a comunicação foi concluída, agora devemos tratar os dados que recebemos, converter de json para um objeto, afim de conseguirmos manipular com mais facilidade.

1
$data = json_decode($data);

Nossa URL encurtada pode ser recuperada dentro de data -> id

1
echo $data -> id;

Caso você queira incluir um qr code em seu sistema para acesso a esse link, poderemos facilmente gerar a imagem adicionando .qr ao final do nosso link encurtado.

Ficaria algo como

1
echo $data -> id . '.qr';

Isso deverá gerar o endereço similar a esse: http://goo.gl/UP603.qr

Segue código na integra

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$url = 'https://www.googleapis.com/urlshortener/v1/url';
$data['longUrl'] = 'http://sounoob.com.br/usando-encurtador-de-url-do-google-com-php';
$data['key'] = 'AIzaSyADeOnBiAo4iOWCjbdPDfXWTVzwwLrymie';
$data = json_encode($data);

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$data = curl_exec($curl);
curl_close($curl);
$data = json_decode($data);

echo $data -> id;

echo '<br />';
echo $data -> id . '.qr';