InicioHazlo Tu MismoUsando la Graph API de Facebook en .NET

Usando la Graph API de Facebook en .NET

Hazlo Tu Mismo9/26/2012


Hola gente, hoy vengo a compartir algo interesante, seguramente a muchos les va a servir.
Lo traigo de mi blog OTRAPC


Seguramente muchas veces se preguntaron, al igual que yo, como hacer para obtener nuestra foto de perfil, portada, nombre, o algo de nuestro facebook (o quizás el de algun amigo). Hay varias formas de hacerlo, yo les voy a mostrar una forma fácil de hacerlo, mediante mi querida amiga Graph API de facebook.

En la documentación de desarrolladores de facebook podrán ver mas en detalle todo lo que se puede hacer.

Para obtener la información básica de un usuario mediante esta API solo tenemos que ir al navegador y poner https://graph.facebook.com/, por ejemplo: https://graph.facebook.com/4 (Mark Zuckerberg)

El navegador nos va a devolver esto:

[color=#000000]
{
   "id": "4",
   "name": "Mark Zuckerberg",
   "first_name": "Mark",
   "last_name": "Zuckerberg",
   "link": "https://www.facebook.com/zuck",
   "username": "zuck",
   "gender": "male",
   "locale": "en_US"
}


Bien, así funciona... Pero de que nos sirve? Si yo quiero usar eso en mi querido amigo "VB"!

Entonces... Manos a la obra (?

Primero que nada abrimos un proyecto nuevo en vb.net, y le ponemos el nombre que queremos.

Yo me diseñé un form de la siguiente forma, ustedes pueden hacerlo como más les guste



Ahora vamos con el código!

Hace un tiempo publiqué como usar la clase WebClient (System.Net.WebClient) y como hacer un GET con ella, hoy nos va a hacer falta!

Antes de empezar, va a ser necesario que descarguen la siguiente librería JSON .NET, mas abajo explicaré para que nos va a servir.

Tendremos que agregar la referencia de la dll que descargamos del link de arriba, una vez hecho eso, empezamos con nuestro código!

Primero que nada, vamos a escribir los siguientes Imports que nos haran falta (para ordenarnos un poco y no escribir tanto)


Imports Newtonsoft.Json
Imports System.Net
Imports System.Text


En el evento Click del boton que pusimos para realizar la búsqueda vamos a realizar todo.

Primero declaramos nuestras variables:


Dim web As New WebClient, obj As Object
Dim link As String = "https://graph.facebook.com/" & txtID.Text


txtID es el Textbox donde pondremos la ID del usuario que queremos buscar.

Abrimos un Try (No se por qué la carita de emoción jajaja)


Try
    obj = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(web.DownloadData(link)))
Catch ex As Exception
    MsgBox("Error: " & ex.Message)
End Try


Bien, veamos que es lo que esta pasando ahí! (Si, no es mucho pero vale la pena explicar un poco). Para hacerlo mas facil vamos de adentro para afuera en los parentesis:

web.DownloadData(link)

Esto ya lo explique en otra publicación, nos devuelve un array de bytes con la respuesta del servidor.

Encoding.UTF8.GetString(web.DownloadData(link))

Convertimos de Byte() (La respuesta explicada anteriormente) a String, si lo vemos hasta aca vamos a tener lo mismo que nos devuelve el navegador como explique mas arriba.

JsonConvert.DeserializeObject(Encoding.UTF8.GetString(web.DownloadData(link)))

Acá llegamos a lo interesante! Estamos usando la librería que descargamos anteriormente.

Para qué nos sirve? Como vimos, la respuesta está en formato JSON y se nos haría un poco complicado tratar con estos datos en crudo en vb.net entonces esta librería nos permite adaptar este tipo de datos a uno mas fácil de manejar en .NET, lo que nos devuelve la función DeserializeObject es un objeto que podremos manejar a gusto y placer. Podríamos haber hecho una clase para manejar estos datos, pero no es el fin del post explicar eso, asique nos limitamos a usar un objeto, que en este caso lo declaramos como "obj".

Cómo hacemos para mostrar estos datos? De la siguiente forma:


lblID.Text = obj("id").value
lblName.Text = obj("name").value
lblUsername.Text = obj("username").value
lblIdioma.Text = obj("locale").value

Select Case obj("gender").value
    Case "male" : lblSexo.Text = "Hombre"
    Case "female" : lblSexo.Text = "Mujer"
End Select


Como podemos ver id, name, username, gender, locale son todos los nombres dentro del objeto json que responde el servidor, y la propiedad .value nos devuelve el valor que contiene el mismo.

Entonces

"name": "Mark Zuckerberg", en nuestro código va a ser obj("name", "Mark Zuckerber" lo vamos a obtener con obj("name".value

Haciendo esto, vamos a llevar todo lo que nos respondío el servidor a labels, textbox, o en donde lo necesitemos en .NET

El ejemplo de como nos quedo en el form:



Aca el código completo:


Imports Newtonsoft.Json
Imports System.Net
Imports System.Text

Public Class frmMain

    Private Sub btnActualizarDatos_Click(sender As Object, e As EventArgs) Handles btnActualizarDatos.Click
        Dim web As New WebClient, obj As Object
        Dim link As String = "https://graph.facebook.com/" & txtID.Text

        Try
            obj = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(web.DownloadData(link)))

            lblID.Text = obj("id").value
            lblName.Text = obj("name").value
            lblUsername.Text = obj("username").value

            Select Case obj("gender").value
                Case "male" : lblSexo.Text = "Hombre"
                Case "female" : lblSexo.Text = "Mujer"
            End Select

            lblIdioma.Text = obj("locale").value

        Catch ex As Exception
            MsgBox("Error: " & ex.Message)
        End Try
    End Sub
End Class




Saludos a todo, espero que les sirva, cualquier duda me preguntan.

Suerte!
Datos archivados del Taringa! original
15puntos
663visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

w
wGD5🇦🇷
Usuario
Puntos0
Posts5
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.