Twitter Facebook Google + RSS Feed

Como obtener el parámetro signed_request de la api de Facebook desde C#

2
ASP.NETFacebook

Martes, 27 de noviembre de 2012 a las 11:17hs por Nahuel Soldevilla

Facebook ofrece un mecanismo para enviar datos a nuestra aplicación llamado signed_request. Este parámetro es una concatenación de un código HMAC SHA-256, un punto (.) y un objecto JSON codificado en base64. Este objeto contiene información acerca del usuario como el id, rango de edad, etc.

Cuando nos encontramos dentro de un tab de Facebook, este mecanismo nos permite obtener cierta información del usuario previamente a pedir los permisos. De esta manera podemos por ejemplo ofrecer distintas pantallas de bienvenida dependiendo de si al usuario le gusta o no la página.

Utilizando el sdk de C#

Para obtener el signed_request utilizando C# hacemos lo siguiente:

  1. Instalamos el paquete Json.net utilizando la extensión NuGet de Visual Studio : PM> Install-Package Newtonsoft.Json
  2. Incluimos el siguiente fragmento de código en nuestra página:
if (Request.Params["signed_request"] != null)
{
    string payload = Request.Params["signed_request"].Split('.')[1];
    var encoding = new UTF8Encoding();
    var decodedJson = payload.Replace("=", string.Empty).Replace('-', '+').Replace('_', '/');
    var base64JsonArray = Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length + (4 - decodedJson.Length % 4) % 4, '='));
    var json = encoding.GetString(base64JsonArray);
    var o = JObject.Parse(json);
    var lPid = Convert.ToString(o.SelectToken("page.id")).Replace("\"", "");
    var lLiked = Convert.ToString(o.SelectToken("page.liked")).Replace("\"", "");
    var lUserId = Convert.ToString(o.SelectToken("user_id")).Replace("\"", "");
}

Al decodificar el objeto, obtenemos en formato string los valores de id de usuario (lUserId), id de la página (lPid) y un booleano (lLiked) indicando si el usuario hizo click sobre el botón de “Me gusta” de la página.


2 comentarios »

  1. Ozzie dice:

    Gracias por este ejemplo! Me ayudo muchisimo. Saludos desde Nueva York. 🙂

  2. Nigel dice:

    amigo podrias subir un proyecto hecho como ejemplo …se lo agradecere mucho ,saludos

Deja un comentario

Buscar