Control de versiones de la plataforma

La plataforma de Facebook es compatible con el control de versiones, lo que permite a los creadores de aplicaciones implementar cambios con el paso del tiempo. En este documento se explica cómo afectan las versiones a los SDK y las API y cómo puedes usar estas versiones en tus solicitudes.

Control de versiones

No todos los SDK y API comparten el mismo sistema de control de versiones. Por ejemplo, las versiones de la API Graph se crean a un ritmo diferente y con una numeración distinta, en comparación con el SDK de Facebook para iOS. Todos los SDK de Facebook admiten la posibilidad de interactuar con distintas versiones de nuestras API. De este modo, pueden coexistir varias versiones de las API o SDK que tengan funcionalidades distintas en cada versión.

¿Cuál es la última versión de la API Graph?

La última versión de la API Graph es v19.0

¿Por qué tenemos versiones?

El objetivo de disponer de un control de versiones es que los desarrolladores que crean aplicaciones puedan conocer con antelación el momento en que un SDK o API puede cambiar. El control de versiones es útil para el desarrollo web, pero es crucial para el desarrollo de dispositivos móviles, ya que una persona que utilice la aplicación en el móvil puede tardar mucho tiempo en actualizarla (o no actualizarla nunca).

Cada versión permanecerá activa durante al menos dos años desde su lanzamiento, de modo que tendrás una línea temporal concreta respecto al tiempo que la aplicación permanecerá en funcionamiento y al tiempo del que dispones para actualizarla a versiones más recientes.

Programaciones de versiones

Se garantiza que cada versión funcionará durante un mínimo de dos años. Una vez publicada una nueva versión de la API, la versión anterior solo se podrá utilizar durante dos años más. Por ejemplo, si la versión 2.3 de la API se lanza el 25 de marzo de 2015 y la versión 2.4 sale el 7 de agosto de 2015, la versión 2.3 caducará el 7 de agosto de 2017, dos años después del lanzamiento de la versión 2.4

En el caso de las API, cuando una versión ya no se puede usar, cualquier llamada que se haga a ella se enviará de forma predeterminada a la siguiente versión más antigua que se pueda usar. A continuación, se muestra un ejemplo de línea temporal:

Como los SDK son paquetes descargables, las versiones siempre seguirán disponibles. Sin embargo, los SDK pueden basarse en API o métodos que ya no funcionen, por lo que debes asumir que un SDK obsoleto deja de ser funcional.

Puedes encontrar información específica sobre las líneas temporales de las versiones, los cambios y las fechas de lanzamiento en la página de registro de cambios.

¿Se mantendrán sin ningún cambio todos los componentes en una versión?

Facebook se reserva el derecho a realizar cambios en cualquier API en un período corto de tiempo en temas relacionados con la seguridad o la privacidad. Estos cambios no se producen muy a menudo, pero ocurren.

¿Qué sucede si no especifico ninguna versión de la API?

Una llamada a la API que se hace sin especificar una versión se denomina sin versión. Por ejemplo, supongamos que la versión actual es la 4.0. La llamada es la siguiente:

curl -i -X "https://graph.facebook.com/v4.0/{my-user-id}&access_token={access-token}"

A continuación se incluye la misma llamada sin versión:

curl -i -X "https://graph.facebook.com/{my-user-id}&access_token={access-token}"

Una llamada sin versión usa la versión definida en la tarjeta Actualizar la versión de la API del panel de aplicaciones, en Configuración > Avanzada. En el siguiente ejemplo, la versión definida en el panel de aplicaciones es la 2.10 y la llamada sin versión es equivalente a la siguiente:

curl -i -X "https://graph.facebook.com/v2.10/{my-user-id}&access_token={access-token}"

Recomendamos especificar la versión siempre que sea posible.

Limitaciones

  • No puedes realizar llamadas a la API sin versión al SDK de Facebook para JavaScript.

¿Mi aplicación puede realizar llamadas a versiones anteriores a la actual?

Puedes especificar versiones anteriores en las llamadas a la API siempre y cuando estén disponibles y la aplicación haya realizado llamadas a esa versión. Por ejemplo, si la aplicación se creó después de que se lanzase la versión 2.0 y realiza llamadas con esa versión, podrá seguir realizando llamadas a la versión 2.0 hasta que esta caduque, incluso después de que se lancen versiones más recientes. Si creaste la aplicación después de la versión 2.0, pero no hiciste ninguna llamada hasta la versión 2.2, la aplicación no podrá realizar llamadas con la versión 2.0 ni a la 2.1. Solo podrá realizarlas con la versión 2.2 y con versiones más recientes.

Control de versiones de la API de marketing

La API de marketing tiene su propio esquema de control de versiones. Tanto los números de versión como las programaciones son diferentes al estado de cosas de la API Graph.

Más información sobre el control de versiones de la API de marketing

Solicitudes con versión

API Graph

Casi todos los extremos de la API Graph, ya sean básicos o ampliados, están disponibles a través de una ruta con versión. Disponemos de una guía completa para usar las versiones con la API Graph en la guía de inicio rápido de la API Graph.

Cuadros de diálogo

Las rutas con versión no solo se usan para los extremos de API, sino también para los cuadros de diálogo y los plugins sociales. Por ejemplo, si quieres generar el cuadro de diálogo de inicio de sesión con Facebook para una aplicación web, puedes anteponer un número de versión al extremo que lo genera:

https://www.facebook.com/v19.0/dialog/oauth?
  client_id={app-id}
  &redirect_uri={redirect-uri}

Plugins sociales

Si utilizas las versiones HTML5 o xfbml de los plugins sociales, la versión especificada al inicializar el SDK de JavaScript determinará la versión representada.

Si estás insertando una versión de enlace plano o iframe de uno de nuestros plugins, tendrás que anteponer el número de versión a la ruta de origen del plugin:

<iframe
  src="//www.facebook.com/v19.0/plugins/like.php?href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&amp;width&amp;layout=standard&amp;action=like&amp;show_faces=true&amp;share=true&amp;height=80&amp;appId=634262946633418" 
  scrolling="no" 
  frameborder="0" 
  style="border:none; overflow:hidden; height:80px;" 
  allowTransparency="true">
</iframe>

Realización de solicitudes con versión desde SDK

Si usas el SDK de Facebook para iOS, Android o JavaScript, la realización de llamadas de control de versiones es, en gran medida, automática. Ten en cuenta que esto es distinto del sistema de control de versiones propio de cada SDK.

JavaScript

El SDK de JavaScript solo puede utilizar versiones de API diferentes si usas la ruta sdk.js.

Si utilizas FB.init() desde el SDK de JavaScript, tienes que usar el parámetro de versión de la siguiente forma:

FB.init({
  appId      : '{app-id}',
  version    : 'v19.0'
});

Si estableces la marca de versión en la inicialización, la versión se antepondrá automáticamente a la ruta a la que se está llamando en todas las llamadas a FB.api(). Lo mismo ocurre con los cuadros de diálogo del inicio de sesión con Facebook a los que se llama. Obtendrás el cuadro de diálogo de inicio de sesión con Facebook para esa versión de la API.

Si lo necesitas, para reemplazar una versión, basta con anteponerla a la ruta del extremo en la llamada de FB.api().

iOS

Cada versión del SDK de Facebook para iOS que se lanza está vinculada con la que está disponible en la fecha del lanzamiento. Esto significa que, si actualizas a un nuevo SDK, también actualizas a la versión de la API más reciente, aunque puedes especificar manualmente cualquier versión anterior de la API que esté disponible con [FBSDKGraphRequest initWithGraphPath]. La versión de la API se indica con el lanzamiento de cada versión del SDK de Facebook para iOS.

Al igual que el SDK de JavaScript, la versión se antepone a todas las llamadas que realices a la API Graph a través del SDK de Facebook para iOS. Por ejemplo, si la versión más reciente de la API fue v2.7, la llamada a /me/friends, que se usa en el código de ejemplo que se muestra a continuación, realmente llamará a /v2.7/me/friends:

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/friends"
  parameters:@{@"fields": @"cover,name,start_time"}]
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
        (...)
    }];

Puedes reemplazar la versión de la llamada con [FBSDKGraphRequestConnection overrideVersionPartWith].

Android

Cada versión del SDK de Facebook para Android que se lanza está vinculada con la que está disponible en la fecha del lanzamiento. Esto significa que, si actualizas a un nuevo SDK, también actualizas a la versión de la API más reciente, aunque puedes especificar manualmente cualquier versión anterior de la API que esté disponible con GraphRequest.setVersion(). La versión de la API se indica con el lanzamiento de cada versión del SDK de Facebook para Android.

Al igual que el SDK de JavaScript, la versión se antepone a todas las llamadas que realices a la API Graph a través del SDK de Facebook para Android. Por ejemplo, si la versión más reciente de la API fue v2.7, la llamada a /me, que se usa en el código de ejemplo que se muestra a continuación, realmente llamará a /v2.7/me:

GraphRequest request = GraphRequest.newGraphPathRequest (
        accessToken,
        "/me/friends",
        new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
                   JSONObject object,
                   GraphResponse response) {
                // Application code
            }
        });
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link");
request.setParameters(parameters); 
request.executeAsync();

Puedes reemplazar la versión de la llamada con GraphRequest.setVersion().