Este artículo proviene de un motor de traducción automática.

Tecnología de vanguardia

Programación esencial de Facebook: widgets y escala de tiempo

Dino Esposito

 

Dino EspositoDespués de cubrir algunos aspectos básicos de la programación de Facebook en columnas anteriores, ahora trataré herramientas y técnicas para ver y recuperar el contenido desde un muro de Facebook para compartir a través de otros medios y catalogarlo para otra cosa, como análisis de business intelligence (BI).

No todas las compañías tienen el mismo nivel de interés en el mundo de comunidades sociales como Facebook. Una lección que he aprendido, sin embargo, es que en todas las empresas, periódicamente un departamento interno — generalmente de marketing — termina con un fuerte interés en acercarse a los clientes y, tal vez más importante, en tener clientes acercarse a la empresa. Una página de fans de Facebook es una de las herramientas para atraer contactos y el número de los gustos y el nivel de actividad en la página pueden medir el éxito de la iniciativa.

¿Dónde encaja la programación? Para mantener una página en Facebook, vivito y coleando y para estimular la actividad del usuario que aumenta el número de "gente hablando de esto", necesita publicar contenido interesante — y con frecuencia. A veces la empresa puede permitirse una plantilla de personas sólo investigación y creación de contenido para la página de Facebook. A veces, en cambio, buen contenido de la página de Facebook viene directamente el flujo regular de la empresa. En este caso, sería un poco problemático para los empleados haciendo sus trabajos regulares de tiempo adicional para informar sobre una página de Facebook lo que están haciendo. Imaginemos, por ejemplo, que noticias se registra en el sitio Web. El flujo de trabajo interno podría ocasionar preparar el texto, que sea aprobado, publicándolo en el sistema interno y esperando que el sistema de administración de contenido para que sea vivo en el sitio. Si la misma noticia debe ser publicada en Facebook, también, la mayoría de las veces la misma persona abre la página de Facebook como administrador y entradas sólo contenido manualmente. A menudo funciona de esta manera hoy, pero no es un enfoque que escala. Esto es justo donde Facebook programación.

Más allá de la fijación

En las últimas entregas de esta columna, abordó el tema principal de desplazamiento en un muro de Facebook y los fundamentos de la construcción de un sitio Web y una aplicación de escritorio que pueden interactuar con la cuenta de Facebook del usuario (puedes ver todas mis columnas en bit.ly/hBNZA0). Para un escenario de empresa donde la pared de blanco es página de la empresa, el enfoque no es realmente diferente. Lo único que cambia es la cuenta que recibe mensajes.

Así el primer paso para la programación de Facebook definitivamente es encontrar una manera de enviar contenido a paredes concretos de forma automatizada bajo el control de su software.

Con el tiempo, el contenido compartido a la página de fans de la empresa, que normalmente incluye comunicaciones de marketing, se convierte en un recurso útil para la empresa. Se convierte en información valiosa que la empresa quiera recuperar y además compartir o analizar. Y este es otro gran ajuste para la programación de Facebook.

Similares caja Widget

Una manera rápida y sencilla para agregar algún contenido de Facebook a su sitio es a través del widget Like Box. El widget listas recientes mensajes en una página de Facebook, así como una lista opcional de los usuarios que les gusta la página. Para sitios Web interesados en usar el contenido publicado en Facebook, este es el primer paso para llevar a cabo. Es importante señalar que el social Facebook Like Box plug-in sólo está destinado a ser utilizado con páginas de fans de Facebook y no funcionará si lo conecta a una cuenta personal de Facebook.

También, tenga en cuenta que Facebook distingue entre ventilador páginas y páginas de perfil. La conclusión es que páginas de fans son para las empresas, mientras que las páginas de perfil son para las personas. Hay algunas diferencias entre los dos en cuanto se refieren a las acciones permitidas. Ante todo, un equipo de personas puede tener derechos de administrador en una página de fans. Además, los postes de una página de fans pueden ser específicamente por idioma y ubicación para que lleguen a seguidores (bueno, fans, realmente) que mejor pueden recibirlos. Páginas de fans características adicionales de la ayuda y pueden promoverse a través de anuncios y patrocinado por artículos.

Por el contrario, páginas de perfil pretenden propietarios quede en contacto con amigos y familiares. Ser un amigo es una condición obligatoria para obtener actualizaciones, a pesar de que a través del mecanismo de suscripción puede permitir no-amigos obtener las actualizaciones así.

Configuración de la caja como para una página Web no podía ser más fácil. Puede obtener una vista previa del contenido que se muestra y agarrar relacionados con HTML directamente desde el sitio de desarrolladores de Facebook. Ir a bit.ly/hFvo7y para una demostración en vivo. Al final, es todo acerca de arreglar una URL larga para encender un elemento iframe. Figura 1 enumera los parámetros que puede utilizar en la URL.

Figura 1 parámetros para configurar el cuadro de Facebook como

Parámetros Descripción
href Indica la dirección URL de la página de fans de Facebook a la función en el cuadro como.
Ancho Indica el ancho deseado en píxeles para el plug-in. El ancho predeterminado es de 300 píxeles.
altura Indica la altura deseada en píxeles del complemento. La altura predeterminada no es fijo y depende de si deben mostrarse caras y arroyos. En general, usted debe permitir 500 píxeles para él si va a tener un flujo de noticias.
ColorScheme Indica el esquema de color para el plug-in. Tiene sólo dos opciones: claro u oscuro.
show_faces Indica si el plug-in debe mostrar fotos de perfil. El valor predeterminado es true.
corriente Indica si el plug-in debe mostrar las últimas entradas del muro de la página.
cabecera Parámetro booleano, oculta o muestra el encabezado de Facebook por defecto en la parte superior del complemento.
border_color Indica el color del borde del complemento.
force_wall Si la página se refiere a un lugar, este parámetro indica si la corriente debe contener los postes de la pared del lugar o sólo entradas de amigos. El valor predeterminado es false.

Todo lo que hacen es organizar una dirección URL y vincularla a un iframe, como se muestra en figura 2.

Figura 2 atar una URL a un Iframe

<iframe src="//www.facebook.com/plug-ins/likebox.php
  ?href=http://www.facebook.com/etennisnetpage
    &width=292&height=490
    &colorscheme=light
    &show_faces=false
    &stream=true
    &header=true
    &appId=xxxxxxxxxxxxxxx"
  scrolling="no"
  frameborder="0"
  style="border:none; overflow:hidden; width:292px; height:590px;"
  allowTransparency="true">
</iframe>

Huelga decir que también puede incrustar el cuadro como en una aplicación de escritorio (por ejemplo, una Windows Presentation Foundation— o WPF — aplicación) a través de un control WebBrowser.

Como puede ver, el plug-in permite para algunos un estilo rápido que trabaja la mayoría de las veces. Sin embargo, si desea aplicar su propio CSS (en la medida en que es posible y documentados) se debe incrustar el Like Box vía JavaScript y HTML5. Figura 3 muestra la salida de un cuadro como para una muestra del sitio con estilo (luz) personalizado y regular.

Sample Like BoxFigura 3 muestra como caja

La actividad de plug-in

Otra forma rápida de incorporar contenido de Facebook específica existente en páginas Web o aplicaciones de escritorio (a través de componentes de navegador) es el complemento de la actividad.

Historias de este plug-in de agregados resultantes de la interacción que los usuarios tienen con su sitio a través de Facebook. Tenga en cuenta que el objetivo aquí no es una página de Facebook sino más bien un sitio externo. Ejemplo las acciones que generan tales alimentos son contenido del gusto en el sitio, ver vídeos, comentar y compartir el contenido del sitio. El plug-in también es capaz de detectar si el usuario actual del sitio que contiene la actividad plug-in está registrado Facebook o no. Si es así, la alimentación muestra está restringida a los amigos del usuario. De lo contrario, el plug-in muestra recomendaciones de en todo el sitio, mientras dando al usuario la opción de iniciar sesión en Facebook y recibir retroalimentación más centrado. Aquí es el marcado que necesita (nota que la actividad de plug-in puede consumirse sólo a través de HTML5 marcado):

<div class="fb-activity"
  data-site="www.yoursite.com"
  data-app-id="xxxxxxxxxxxxx"
  data-width="300"
  data-height="300"
  data-header="true"
  data-recommendations="true">
</div>

Se debe incorporar el SDK de JavaScript en la página en orden para este marcado para producir lo que es figura 4.

The Activity Plug-in in ActionFigura 4 la actividad plug-in en acción

Acceso a la línea de tiempo

En más allá de las columnas, usé el Facebook C# SDK para fijar a la pared tanto texto y archivos adjuntos. Una vez hecho el post, amigos y fans pueden interactuar con ella por gustando, compartirlo y comentando. Vamos a ver lo que se necesita para leer la línea de tiempo de un usuario determinado.

Facebook asigna un ID único y bastante larga a cualquier cuenta, si el perfil o fan page. Los usuarios, sin embargo, no utilizan este ID para identificar páginas. Así que lo primero que debemos hacer para leer una línea de tiempo es coincidir con el público de la página (o usuario) para el ID de Facebook subyacente. Como un mero ejercicio, puede escribir lo siguiente en la barra de direcciones de cualquier navegador: https://Graph.Facebook.com/your-Page-name.

El marcador de posición "su-página-nombre" es sólo el nombre de la cuenta como escribiría para llegar a la página. Obtener el ID de la cuenta que desea leer la línea de tiempo, es sólo el primer paso. También debe estar autenticado para acceder a la alimentación. La conclusión es que cualquier operación que va directamente contra la Facebook Graph API subyacente requiere autenticación OAuth. Esto significa que los mismos pasos preliminares en columnas pasadas también se deben hacer aquí:

  • Crear una aplicación de Facebook para tratar con el extremo posterior de Facebook.
  • Que el usuario autoriza la aplicación de Facebook para operar en nombre de la cuenta. Este paso ofrece un token de acceso que une (por tiempo limitado) el usuario y la aplicación de Facebook.
  • Utilice el token de acceso como la clave para operar contra la Graph API de la aplicación host (por ejemplo, una aplicación de MVC ASP.NET ).

Una vez adquirido, el token de acceso puede ser guardado en un cookie y utilizado para todas las operaciones más hasta que caduque. Aquí está el código necesario para obtener la alimentación cruda desde el servidor de Facebook:

var name = "name-of-the-user"; 
  // For example, joedummy
  var client =
    new FacebookClient(access_token);
  dynamic user = client.Get(name); 
  dynamic feed =
    client.Get(name + "/feed");

La primera llamada al cliente Facebook estrictamente no requiere el token de acceso, como se espera devolver sólo pública información sobre el usuario. La variable de usuario expone las propiedades como first_name, last_name, identificación y ubicación. Dependiendo de sus intenciones, no necesitará realizar esta llamada. La segunda llamada al cliente de Facebook es lo que realmente hace el truco. Toma una cadena que indica la ruta de acceso a la alimentación del usuario. Construyes el camino concatenar el nombre de la cuenta con la /feed cadena. En cambio, se obtiene un dinámico C# objeto construido con una secuencia subyacente de JSON. Figura 5 muestra la estructura de la secuencia JSON como capturado por Fiddler.

The JSON Structure of a Timeline Item in FacebookFigura 5 la estructura JSON de un elemento de línea de tiempo en Facebook

Demuestra que el post seleccionado tiene dos tipos de acciones — se ha gustado y comentadas. Actualmente cuenta con 14 gustos. Más detalles sobre quienes comentaron en él o le gustó están disponibles como expandir los nodos. Finalmente, encontrará el contenido del post. En el nivel JSON, el contenido del post es el campo de mensaje.

Es importante tener en cuenta que no todos los mensajes tienen la misma estructura; Esta es la razón por qué el Facebook C# SDK no utiliza clases llanas, estáticamente definidas como objetos de transferencia de datos (DTO). Un inconveniente común es que el post carece de un mensaje, el enlace y la foto, pero incluye un campo de la historia. Este es el caso, por ejemplo, cuando el administrador agrega una colección de fotos.

El SDK de Facebook C# sólo las manos un objeto dinámico de C#. Análisis que más define los tipos de datos, o decidir que el objeto es bueno ya que es hasta el punto de vista, es la llamada. Figura 6 muestra algún código que intenta analizar el objeto dinámico en una clase de C# clásica.

Figura 6 análisis un objeto dinámico en una clase de clásico C#

public class FacebookPost
{
  public String PostId { get; set; }
  public String Author { get; set; }
  public String Picture { get; set; }
  public String Link { get; set; }
  public String Published { get; set; }
  public String ContentHtml { get; set; }
  private delegate String ExtractDelegate();
  public static IList<FacebookPost> Import(dynamic data)
  {
    var posts = new List<FacebookPost>();
    foreach (var item in data)
    {
      var tempItem = item;
      var fb = new FacebookPost
      {
        PostId = Extract(() => tempItem["id"]),
        Published = Extract(() => tempItem["created_time"]),
        Picture = Extract(() => tempItem["picture"]),
        Link = Extract(() => tempItem["link"]),
        Author = Extract(() => tempItem["from"]["name"])
      };
      try
      {
        fb.ContentHtml = Extract(() => tempItem["message"]);
      }
      catch
      {
      }
      if (!String.IsNullOrEmpty(fb.ContentHtml))
        posts.Add(fb);
      }
      return posts;
    }
  private static String Extract(ExtractDelegate func)
  {
    try {
      return func();
    } catch {
        return null;
      }
  }
}

La parte más molesta de este código es encontrar una manera eficaz para comprobar si una propiedad se define en el objeto dinámico que analizar. Bastantes usuarios stackoverflow.com acordar el enfoque se muestra en la figura 6, basado en un delegado.

Ocuparse de las redes sociales se abre un nuevo mundo de posibilidades, que se convierten en oportunidades para los desarrolladores pensar y realizar nuevas aplicaciones creativas. Como desarrollador .NET, usted debe ser un amigo de Facebook C# SDK.

Dino Esposito es el autor de "Arquitectura móvil soluciones para la empresa" (Microsoft Press, 2012) y "programación ASP.NET MVC 3" (Microsoft Press, 2011) y coautor de ".NET de Microsoft: Diseñar la arquitectura de aplicaciones para la empresa"(Microsoft Press, 2008). Con sede en Italia, Esposito es un orador frecuente en eventos de la industria en todo el mundo. Síguelo en Twitter en twitter.com/despos.

Gracias a los siguientes expertos técnicos por su ayuda en la revisión de este artículo: Scott Densmore (Microsoft)
Scott Densmore es un un desarrollo senior lead en Microsoft trabajando en características en Visual Studio. Ha trabajado en equipos de desarrollo ágil para los últimos 10 años en grandes entornos corporativos y pequeñas empresas. Sus intereses principales son cloud computing, computación móvil y computación social. Usted puede encontrarlo en scottdensmore.com y en Twitter en @scottdensmore.