Autenticação com Django + Foursquare + OAuth com PyFoursquare


Há algum tempo por fins de experimentos no meu mestrado,  eu desenvolvi um cliente para consumir a API do Foursquare em Python. O nome do projeto é PyFoursquare e está hospedado como projeto open-source no Github.
Recentemente um amigo me perguntou se era possível fazer o processo de autenticação/login via web em vez de ser realizado via console. Ainda não era! Mas então aceitei o desafio e após 2 horas construi uma aplicação web bem simples usando python + django + foursquare + pyfoursquare :D
Para aqueles que procuram algum guia ou exemplo este pode ser um excelente ponto de partida. 
Para usar é muito simples:
Crie uma aplicação no Foursquare  e obtenha seu Client ID  e seu Client Secret.  É importante que a url de callback seja agora a url local da sua máquina de desenvolvimento ( no meu caso como uso django a url padrão é o http://localhost:8000/callback )
Form to register an application



Uma observação importante é que o formulário de validação não permite usar o caractere ':' na sua url de callback. Mas uma vez que sua app esteja registrada, você pode editar a url e adicionar o :8000, visto que o formulário não valida a atualização. A sua url irá ficar como algo abaixo:
Agora basta acessar os exemplos disponíveis na pasta examples/django.  Ele já fornece toda a app pronta em django com algumas views, algumas páginas simples html , uma para login e uma para quando estiver logado.
O que você precisa fazer é, primeiramente rodar o comando abaixo:
python manage.py syncdb
Feito isso ele criará algumas tabelas para armazenar as sessões das requisições da sua app web. Isto será armazenado em um mini-banco de dados local que Python suporta nativamente em Sqlite3 :D
Agora abra o settings.py e adicione no final do arquivo os campos:

1
2
3
4
5
6
FOURSQUARE_CLIENT_ID = 'YOUR_CLIENT_ID'
FOURSQUARE_CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
FOURSQUARE_CALLBACK = 'http://127.0.0.1:8000/callback'
Se você abrir o arquivo djfoursquare/views.py , você verá toda a lógica relacionada ao processo de autenticação utilizando já a api do PyFoursquare com OAuth2 .
Vamos agora rodar o servidor web com:
python manage.py runserver
Abra seu browser na página http://localhost:8000










E é isto pessoal, uma simples app web com uma simples autenticação OAuth com Foursquare usando a biblioteca PyFoursquare. O código está completo no github se quiser dar uma olhada mais profunda!
Até a próxima,
Marcel Caraciolo
top