SlideShare uma empresa Scribd logo
1 de 25
http://netponto.org 21ª Reunião Lisboa - 18/06/2011 Desenvolvimento de Aplicações para o Facebook em ASP .NET Vítor Paulino
Patrocinadores desta reunião
Vítor Paulino	 NetPonto ISEL Cliente B  Eu Copos & Jantas Novabase Cliente A
Agenda Graph API Registar uma aplicação Autenticação Aceder aos objectos Frameworks
Também disponível em vídeo... Assista! http://vimeo.com/25903038
Graph API
Graph API Arquitectura REST url / <identificação do objecto do grafo >? parâmetros Endpoints disponíveis  Aceder ao grafo : https://graph.facebook.com Aceder à api https://api.facebook.com Pedidos em Batch Representação dos dados :  json
Registo da aplicação  Registo do url base da aplicação Obtem-se ApplicationID APIKey AppSecret Configurações de integração Configurações de interacção da aplicação com o Facebook
Autenticação / Autorização
demonstração Registo de umaaplicação + autenticação e autorização Código-fonte disponível em: http://socialfacebook.codeplex.com/
Aceder aos objectos 2 formas de aceder:  Aografo: https://graph.facebook.com/{0} {0} : identificação do objecto e os seus paramêtros Aorepositóriofisico dos objectos: https://api.facebook.com/method/fql.query?query={0} {0} : query FQL
Aceder aos objectos	 Ao grafo :  url base : https://graph.facebook.com Parameterizado com :  Graph id que queremos aceder: ex:  /me/friends Argumentos para obter informação desse objecto  Access_token ( obrigatório ! )  Conjunto de parâmetros especificos do objecto ( opcionais )
Aceder aos objectos	 Acções disponiveis :   Autorização de acesso  Selecção Pesquisa Publicação  Delete  Paginação  Introspecção sobre os objectos do grafo Analytics Pedidos batch
Aceder aos objectos	 FQL - Facebook Query Language  https://api.facebook.com/method/fql.query?query Sintaxe semelhante ao SQL com algumas restrições: Não é possivel usar queries com joins  Só é possivel referenciar uma tabela por query Não se pode usar na cláusula where colunas que não sejam indexaveis
Frameworks Facebook C# SDK Facebook.Web.Mvc  Assembly Facebook.Web Assembly Facebook Assembly
Frameworks Facebook C# SDK – exemplo: var client = new FacebookClient();  dynamic me = client.Get("me");  string firstName = me.first_name;  string lastName = me.last_name;  string email = me.email;
Frameworks Facebook C# SDK – exemplo: var client = new FacebookClient("my_access_token");  dynamic parameters = new ExpandoObject();  parameters.message = "Check out this funny article";  parameters.link = "http://www.example.com/article.html";  parameters.picture = "http://www.example.com/article-thumbnail.jpg";  dynamic result = client.Post("me/feed", parameters);
Frameworks  - “My”Facebook SDK Autenticação e Autorização FbAuthenticationModule : IHttpModule AuthenticationUtils Web.Config
Frameworks  - “My”Facebook SDK FacebookService : IFacebookService Facebook Config FacebookChannel IFacebookChannel
Infraestruturas demonstração Código-fonte disponível em: http://socialfacebook.codeplex.com/
Questões?
Referências Facebook Developers http://developers.facebook.com Facebook Graph http://caseorganic.com/blog/2010/12/tools-for-visualizing-facebook-social-graphs/
Próximas reuniões presenciais 18/06/2011 – Junho 09/07/2011 – Julho (Coimbra) 23/07/2011 – Julho 27/08/2011 – Agosto Reserva estes dias na agenda! :)
Patrocinadores desta reunião
Obrigado! Vítor Paulino vmlepaulino@gmail.com

Mais conteúdo relacionado

Semelhante a Desenvolvimento de Aplicações para o Facebook em ASP .NET

Desenvolvimento web com tecnologias microsoft
Desenvolvimento web com tecnologias microsoftDesenvolvimento web com tecnologias microsoft
Desenvolvimento web com tecnologias microsoftDennes Torres
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsFábio Elísio
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Marcelo Rodrigues
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Fernando Gonçalves
 
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconDesenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconBruno Rocha
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojofabioginzel
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...
Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...
Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...Fabian Gehrke
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Rodrigo Kono
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteJohann Vivot
 

Semelhante a Desenvolvimento de Aplicações para o Facebook em ASP .NET (20)

Desenvolvimento web com tecnologias microsoft
Desenvolvimento web com tecnologias microsoftDesenvolvimento web com tecnologias microsoft
Desenvolvimento web com tecnologias microsoft
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.js
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
jQuery e ASP.Net mvc2
jQuery e ASP.Net mvc2jQuery e ASP.Net mvc2
jQuery e ASP.Net mvc2
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)
 
W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconDesenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...
Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...
Community Webcast: Portal Silverlight Brasil - Criando Aplicativos Ricos Para...
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Acessando banco de dados remoto com android
Acessando banco de dados remoto com android Acessando banco de dados remoto com android
Acessando banco de dados remoto com android
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
 
Iniciando com ASP.NET
Iniciando com ASP.NETIniciando com ASP.NET
Iniciando com ASP.NET
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonte
 

Mais de Comunidade NetPonto

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Comunidade NetPonto
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Comunidade NetPonto
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaComunidade NetPonto
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazComunidade NetPonto
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComunidade NetPonto
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpComunidade NetPonto
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoComunidade NetPonto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteComunidade NetPonto
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Comunidade NetPonto
 

Mais de Comunidade NetPonto (20)

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara Silva
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor Tomaz
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
OData – Super Cola W3
OData – Super Cola W3OData – Super Cola W3
OData – Super Cola W3
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharp
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de Projecto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
 

Desenvolvimento de Aplicações para o Facebook em ASP .NET

  • 1. http://netponto.org 21ª Reunião Lisboa - 18/06/2011 Desenvolvimento de Aplicações para o Facebook em ASP .NET Vítor Paulino
  • 3. Vítor Paulino NetPonto ISEL Cliente B Eu Copos & Jantas Novabase Cliente A
  • 4. Agenda Graph API Registar uma aplicação Autenticação Aceder aos objectos Frameworks
  • 5. Também disponível em vídeo... Assista! http://vimeo.com/25903038
  • 7. Graph API Arquitectura REST url / <identificação do objecto do grafo >? parâmetros Endpoints disponíveis Aceder ao grafo : https://graph.facebook.com Aceder à api https://api.facebook.com Pedidos em Batch Representação dos dados : json
  • 8. Registo da aplicação Registo do url base da aplicação Obtem-se ApplicationID APIKey AppSecret Configurações de integração Configurações de interacção da aplicação com o Facebook
  • 10. demonstração Registo de umaaplicação + autenticação e autorização Código-fonte disponível em: http://socialfacebook.codeplex.com/
  • 11. Aceder aos objectos 2 formas de aceder: Aografo: https://graph.facebook.com/{0} {0} : identificação do objecto e os seus paramêtros Aorepositóriofisico dos objectos: https://api.facebook.com/method/fql.query?query={0} {0} : query FQL
  • 12. Aceder aos objectos Ao grafo : url base : https://graph.facebook.com Parameterizado com : Graph id que queremos aceder: ex: /me/friends Argumentos para obter informação desse objecto Access_token ( obrigatório ! ) Conjunto de parâmetros especificos do objecto ( opcionais )
  • 13. Aceder aos objectos Acções disponiveis : Autorização de acesso Selecção Pesquisa Publicação Delete Paginação Introspecção sobre os objectos do grafo Analytics Pedidos batch
  • 14. Aceder aos objectos FQL - Facebook Query Language https://api.facebook.com/method/fql.query?query Sintaxe semelhante ao SQL com algumas restrições: Não é possivel usar queries com joins Só é possivel referenciar uma tabela por query Não se pode usar na cláusula where colunas que não sejam indexaveis
  • 15. Frameworks Facebook C# SDK Facebook.Web.Mvc Assembly Facebook.Web Assembly Facebook Assembly
  • 16. Frameworks Facebook C# SDK – exemplo: var client = new FacebookClient(); dynamic me = client.Get("me"); string firstName = me.first_name; string lastName = me.last_name; string email = me.email;
  • 17. Frameworks Facebook C# SDK – exemplo: var client = new FacebookClient("my_access_token"); dynamic parameters = new ExpandoObject(); parameters.message = "Check out this funny article"; parameters.link = "http://www.example.com/article.html"; parameters.picture = "http://www.example.com/article-thumbnail.jpg"; dynamic result = client.Post("me/feed", parameters);
  • 18. Frameworks - “My”Facebook SDK Autenticação e Autorização FbAuthenticationModule : IHttpModule AuthenticationUtils Web.Config
  • 19. Frameworks - “My”Facebook SDK FacebookService : IFacebookService Facebook Config FacebookChannel IFacebookChannel
  • 20. Infraestruturas demonstração Código-fonte disponível em: http://socialfacebook.codeplex.com/
  • 22. Referências Facebook Developers http://developers.facebook.com Facebook Graph http://caseorganic.com/blog/2010/12/tools-for-visualizing-facebook-social-graphs/
  • 23. Próximas reuniões presenciais 18/06/2011 – Junho 09/07/2011 – Julho (Coimbra) 23/07/2011 – Julho 27/08/2011 – Agosto Reserva estes dias na agenda! :)
  • 25. Obrigado! Vítor Paulino vmlepaulino@gmail.com