Consumindo a API do Facebook com C# – // Rodolfo Fadino
rodolfo in ASP.NET | December 12, 2011 Consumindo a API do Facebook com C#
Para começar eu criei dois projetos, sendo um Class Library e um WebSite com ASP.NET WebForms:
Agora, vamos começar a desenvolver a classe que acessará a API do Facebook, para isso eu criei uma classe chamada AuthFacebook:
namespace DemoFacebook.BL
public class AuthFacebook
public const string Authorize = "";
public const string Access_Token = "";
public string CallBack_Url = "";
private string _aplicationKey="";
private string _aplicationSecret = "";
private string _token = "";
public string AplicationKey{ get; set; }
public string AplicationSecret { get; set; }
public string Token{ get; set; }
public string GetAuthorizationLinkPopup()
public void GetAccessToken(string authToken)
public string Request(Method method, string url, string postData)
public  string GetWebResponse(HttpWebRequest webRequest)
Nela eu configurei as propriedades de Secret e Key da aplicação
public const string Authorize = "https://graph.facebook.com/oauth/authorize";
public const string Access_Token = "https://graph.facebook.com/oauth/access_token";
public string AplicationKey
if (_aplicationKey.Length == 0)
_aplicationKey = ConfigurationManager.AppSettings["Facebook_aplicationKey"];
return _aplicationKey;
set { _aplicationKey = value; }
public string AplicationSecret
if (_aplicationSecret.Length == 0)
_aplicationSecret = ConfigurationManager.AppSettings["Facebook_aplicationSecret"];
return _aplicationSecret;
set { _aplicationSecret = value; }
Nosso próximo passo será programar os dois métodos que retornarão as urls de autenticação:
return string.Format("{0}?client_id={1}&redirect_uri={2}&scope={3}",
Authorize, AplicationKey, CallBack_Url, "publish_stream");
return string.Format("{0}?client_id={1}&display=popup&redirect_uri={2}&scope={3}",
Agora vamos desenvolver o método que utilizará o authToken para requisitar o Token de acesso, um token que poderemos utilizar em definitivo nas nossa aplicação para o determinado usuário:
string accessTokenUrl = string.Format("{0}?client_id={1}&redirect_uri={2}&client_secret={3}&code={4}",
Access_Token, this.AplicationKey, CallBack_Url, this.AplicationSecret, authToken);
string response = Request(Method.GET, accessTokenUrl, String.Empty);
if (qs["access_token"] != null)
this.Token = qs["access_token"];
Finalmente vamos desenvolver os últimos dois métodos, eles serão responsáveis por fazer e montar as requisições:
string responseData = "";
webRequest.UserAgent = "[Seu user agent]";
webRequest.ContentType = "application/x-www-form-urlencoded";
responseData = GetWebResponse(webRequest);
public string GetWebResponse(HttpWebRequest webRequest)
Chegou a hora de usar nossa classe 🙂 para isso eu vou configurar a aplicação que eu criei no Facebook (http://developers.facebook.com/)
Também irei configurar a Key e o Secret no Web.Config da aplicação:
<add key="Facebook_aplicationKey" value="238348076215393"/>
<add key="Facebook_aplicationSecret" value="c3dddef5412fa014d2832f619e66a845"/>
Com isso já podemos utilizar nossa classe, criei duas páginas, a Default.aspx e a CallbackFacebook.aspx que será a onde teremos o retorno da autenticação com o Facebook.
Na página CallbackFacebook.aspx eu programei o seguinte:
AuthFacebook oAuth = new AuthFacebook();
oAuth.CallBack_Url = "http://localhost:1789/CallbackFacebook.aspx";
if (Request["code"] == null)
Response.Redirect(oAuth.GetAuthorizationLink());
oAuth.GetAccessToken(Request["code"]);
if (oAuth.Token.Length > 0)
Session["token"] = oAuth.Token;
Veja que eu "Guardei" o token do usuário em uma Session apenas a titulo de exemplo, sendo que o ideal é guarda-lo em um banco de dados.
Agora eu recupero esse token na Defout.aspx e faço uma requisição a qualquer url da api, o que me retornará um json com o resultado:
if(Session["token"] ==null)
oAuth.Token = Session["token"].ToString();
var url = "https://graph.facebook.com/me?access_token=" + oAuth.Token;
string json = oAuth.Request(AuthFacebook.Method.GET, url, String.Empty);
ltrJson.Text = json;
Lembrando que poderiamos fazer qualquer tipo de requisição, inclusive enviar e postar mensagens para o usuário.
Como exemplo eu retornei os dados do perfil do usuário:
O projto de demo está disponivel no meu github:
https://github.com/rodolfofadino/FacebookDemo
Write a Comment alan ferreira
Cara, só dei uma olhada rápida e acho que vai me ajudar muito num proleto novo. Valeu.
que bom 🙂 da uma olhada nesse sdk http://facebooksdk.codeplex.com/documentation
Francisco_berrocal
Tenha a decência de indicar a referência, SEMPRE!
http://osnapz.wordpress.com/2010/04/23/using-asp-net-with-facebooks-graph-api-and-oauth-2-0-authentication/
Cópia do que? de uma classe que faz WeRequest(Get e Post)?, comecei o post falando: "Existem diversos SDK's que facilitam a integração com a API do Facebook, para .NET um dos mais completos é o Facebook C# SDK".
A idéia do post é mostrar que dá para utilizar a API do Facebook com simples request's. e ainda expliquei 1 por 1.
Parabéns Rodolfo! Artigo sensacional! Melhor que todos os outros que li, e olha que li vários!
Munnagp05
working fine this method , but when we want to message post on friends wall. GOTO Facebook come.? How to avoid it, have any idea
Reason is if (Request["code"] == null)
How ro Get Access_Token with Reponse.Redired() method use.???????? URGENT
http://www.facebook.com/tatiane.vianna.733 Tatiane Vianna
Rodolfo, seu post é show de bola. E só de olhar o retorno final já me abriu minha mente para um projeto 10!!!
Assim que iniciar eu mostrarei como ficará!!!
Boas tardes, o seu post vai me ajudar num trabalho para a faculdade, mas estou a precisar da sua ajuda, se eu quiser trazer os post/feeds do meu mural como faço? outra questão é existe forma de agarrar no json e colocar numa datagrid e posteriormente guarda-lo numa bd externa? ja agora muito obrigado pelo seu post e ajuda
Bom dia Samuel, para fazer post no mural do usuário, é só fazer uma chamada (http post) para a api passando os parâmetros necessários https://developers.facebook.com/docs/reference/api/post/
Obrigado Rodolfo, porém não estou conseguindo criar um grupo. Tentei os comandos na página oficial do API mas não funciona. Sempre dá um erro. Sabe como posso realizar a criação de um grupo automaticamente via código apenas informando o nome desejado do grupo? Consegui postar, associar usuários em um grupo existente, listar todos os amigos de um usuário,etc. menos isso.
Amigo é possível se conectar automaticamente sem a caixa de diálogo do facebook? Poderia via código ser passado o usuário e senha e a conexão ser realizada instantaneamente sem a interação de um usuário com a caixa de login? Outra dúvida é se possível criar um novo grupo, criar um método que crie o grupo sem ter que entrar no próprio facebook e criar manualmente.
Bruno, não é possível obter o token de autenticação sem a chamada do dialogo do facebook, pois o usuário precisa permitir, uma vez que você tenha o token de acesso, com ele você pode fazer as requisições sem abrir o dialogo novamente
http://www.facebook.com/profile.php?id=100002566589025 Lucas NGomes
Tem alguma forma de listar os álbuns e carregar as fotos em meu aplicativo? Preciso criar albuns tambem.
Agradeço desde já pelo post!
Sim, a api permite listar albuns e fotos, desde que a permissão necessária seja solicitada, da uma lida na documentação http://developers.facebook.com/docs/reference/api/album/
OLá, muito bom o seu post! Porém eu reparei que o resultado do GET, retorna valores que não aceitam caracteres especiais, sabe dizer por que? Por exemplo: Ao invés de mostrar cidade São Paulo, ele mostra como Su00e3o Paulo . No seu próprio resultado no exemplo também dá para ver se também está assim. Existe alguma solução para isso?!