La plataforma de Facebook admite varias versiones para que los creadores de apps puedan implementar cambios en el futuro. Este documento explica cómo se ven afectados los SDK y las API con las versiones y cómo usar estas versiones en tus solicitudes.
No todas las API ni todos los SDK comparten el mismo sistema de versiones. Por ejemplo: la versión de la API Graph cuenta con una numeración y un ritmo diferentes en comparación con los del SDK de Facebook para iOS. Todos los SDK de Facebook admiten la posibilidad de interactuar con versiones diferentes de nuestras API. Pueden existir varias versiones de API o SDK al mismo tiempo con diferente funcionalidad en cada versión.
La versión más reciente de la API Graph es v21.0
El objetivo de contar con diferentes versiones es que los desarrolladores de las app puedan saber de antemano cuándo podría cambiar una API o un SDK. Ayudan con el desarrollo web, pero son esenciales junto con el desarrollo de apps móviles porque una persona que usa tu app en su teléfono puede tardar mucho tiempo en aplicar una actualización (o es posible que nunca lo haga).
Cada versión durará al menos 2 años a partir del lanzamiento, lo que te dará una buena perspectiva temporal para saber por cuánto tiempo seguirá funcionando tu app y cada cuánto tiempo deberás actualizarla.
Se garantiza que las versiones funcionarán durante dos años, por lo menos. Cada versión ya no podrá utilizarse a partir de los dos años posteriores a la fecha de lanzamiento de la versión siguiente. Por ejemplo, si la versión de la API 2.3 se lanza el 25 de marzo de 2015 y la 2.4 se lanza el 7 de agosto de 2015, la API 2.3 vencerá el 7 de agosto de 2017, dos años después del lanzamiento de la versión 2.4.
Cuando la versión de una API deja de usarse, todas las llamadas que se hagan a esta API se dirigirán a la última versión anterior que funcione. Este es un ejemplo de línea de tiempo:
En el caso de los SDK, siempre estará disponible una versión, ya que se trata de un paquete descargable. Sin embargo, es posible que el SDK dependa de API o métodos que dejaron de funcionar. Por ese motivo, deberías asumir que los SDK que caducaron dejaron de ser funcionales.
Puedes encontrar información específica sobre las líneas de tiempo de nuestras versiones, cambios y fechas de lanzamiento en la página de registro de cambios.
Facebook se reserva el derecho de realizar cambios rápidos en cualquiera de las API en relación con problemas que se presenten y afecten la seguridad y la privacidad. Estos cambios no son frecuentes, pero tienen lugar.
Denominamos a una llamada a la API que no especifica una versión "llamada sin versión". Por ejemplo, digamos que la versión actual es 4.0. La llamada es la siguiente:
curl -i -X "https://graph.facebook.com/v4.0/{my-user-id}&access_token={access-token}"
La misma llamada sin versión se muestra a continuación:
curl -i -X "https://graph.facebook.com/{my-user-id}&access_token={access-token}"
Una llamada sin versión usa aquella que se haya establecido en la tarjeta Actualizar versión de API en Configuración > Opciones avanzadas en el panel de apps. En el ejemplo siguiente, la versión establecida en el panel de apps es la 2.10 y la llamada sin versión equivale a esto:
curl -i -X "https://graph.facebook.com/v2.10/{my-user-id}&access_token={access-token}"
Te recomendamos especificar siempre la versión cuando sea posible.
Puedes especificar versiones anteriores en tus llamadas de API siempre que estén disponibles y tu app haya hecho llamadas a las versiones en cuestión. Por ejemplo, si tu app se creó después del lanzamiento de la versión 2.0 y hace llamadas usando esta versión, podrá hacer llamadas a ella hasta que caduque, incluso después del lanzamiento de nuevas versiones. Si creaste tu app después de la versión 2.0, pero no hiciste llamadas hasta la 2.2, tu app no podrá hacer llamadas usando la 2.0 ni la 2.1. Solo podrá hacer llamadas usando la versión 2.2 y versiones más nuevas.
La API de marketing tiene su propio esquema de versiones. Los números de versión y los cronogramas son diferentes de los de la API Graph.
Obtén más información sobre las versiones de la API de marketing.Ya sea básica o extendida, casi todos los puntos de conexión de la API Graph están disponibles a través de rutas de versiones. Contamos con una guía completa de cómo usar las versiones de la API Graph en nuestra guía de inicio rápido de API Graph.
Las rutas de versiones no solo son indicadas para los puntos de conexión de la API, sino también para los cuadros de diálogo y los plugins sociales. Por ejemplo: si deseas generar el cuadro de diálogo de inicio de sesión con Facebook para una app web, puedes agregar un número de versión al punto de conexión que genera el cuadro de diálogo:
https://www.facebook.com/v21.0
/dialog/oauth?
client_id={app-id}
&redirect_uri={redirect-uri}
Si usas las versiones HTML5 o xfbml de nuestros plugins sociales, la versión representada estará determinada por la versión especificada cuando inicialices el SDK de JavaScript.
Si insertas un iframe o una versión de enlace simple de alguno de nuestros plugins, puedes agregar el número de versión en la ruta de origen del plugin:
<iframe
src="//www.facebook.com/v21.0
/plugins/like.php?href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&width&layout=standard&action=like&show_faces=true&share=true&height=80&appId=634262946633418"
scrolling="no"
frameborder="0"
style="border:none; overflow:hidden; height:80px;"
allowTransparency="true">
</iframe>
Si usas el SDK de Facebook para iOS, Android o JavaScript, las llamadas de control de versiones son sobre todo automáticas. Ten en cuenta que esto difiere según el sistema propio de cada uno de los SDK.
El SDK de JavaScript SDK solo puede usar diferentes versiones de API si usas la ruta de sdk.js
.
Si usas FB.init()
del SDK de JavaScript, debes emplear el parámetro de versión, como se muestra aquí:
FB.init({
appId : '{app-id}',
version : 'v21.0
'
});
Si estableces la marca de la versión en el inicio, se les agregará automáticamente a las llamadas a FB.api()
la versión, que se añadirá a la ruta que se llamó. Se aplica lo mismo para cualquier diálogo de inicio de sesión con Facebook que reciba llamadas. Obtendrás el cuadro de diálogo de inicio de sesión de Facebook para esa versión de la API.
De ser necesario, puedes reemplazar una versión con solo agregar la versión a la ruta del punto de conexión en la llamada a FB.api()
.
Las versiones del SDK de Facebook para iOS que se lanzaron están ligadas a la versión disponible a la fecha en que se realiza el lanzamiento. Esto significa que si realizas una actualización a un SDK nuevo también harás la actualización a la versión de API más reciente (aunque puedas especificar cualquier versión de API anterior disponible con [FBSDKGraphRequest initWithGraphPath]
). La versión de la API figura al lanzarse cada una de las versiones del SDK de Facebook para iOS.
Al igual que lo que sucede con el SDK de JavaScript, la versión se agrega a las llamadas que realizas a la API Graph a través del SDK de Facebook para iOS. Por ejemplo, si v2.7
fuera la versión más reciente de la API, la llamada /me/friends
, usada en el siguiente ejemplo de código, 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 anular la versión de la llamada con [FBSDKGraphRequestConnection overrideVersionPartWith]
.
Las versiones del SDK de Facebook para Android que se lanzaron están ligadas a la versión disponible a la fecha en que se realiza el lanzamiento. Esto significa que si realizas una actualización a un SDK nuevo también harás la actualización a la versión de API más reciente (aunque puedas especificar cualquier versión de API anterior disponible con GraphRequest.setVersion()
). La versión de la API figura al lanzarse cada una de las versiones del SDK de Facebook para Android.
Como en buena medida sucede con el SDK de JavaScript, la versión se agrega a las llamadas que realizas a la API Graph a través del SDK de Facebook para Android. Por ejemplo, si v2.7
fuera la versión más reciente de la API, la llamada /me/friends
, usada en el siguiente ejemplo de código, llamará a /v2.7/me/friends
:
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 anular la versión de la llamada con GraphRequest.setVersion()
.