The Web Games on Facebook and Facebook Gameroom platforms are no longer available for new submissions. This documentation is intended solely for developers with existing games. To learn more, read our blog post.
Al crear un juego para Facebook.com, estás creando una aplicación web que se proporcionará dentro de un contenedor iframe
en Facebook.com. Dado que Facebook solamente proporciona juegos a jugadores que hayan iniciado sesión, siempre autenticarás usuarios con sesión iniciada en Facebook.
Por lo tanto, debes crear juegos que admitan el inicio de sesión con Facebook; así, tendrás un identificador coherente con el que sincronizar y mantener el progreso en el juego, y podrás implementar las funciones sociales que los jugadores de videojuegos esperan. Si el juego está disponible en varias plataformas, puedes utilizar este mismo identificador para sincronizar el progreso de los jugadores en todos los dispositivos que utilicen.
En este documento se resumen los diversos enfoques sobre el uso del inicio de sesión con Facebook y cómo sacarle el máximo partido a cada uno de ellos en tu juego.
Existen varios procedimientos para que los jugadores se autentiquen por primera vez y varios enfoques para verificar su identidad tras la primera autenticación.
Cuando los jugadores inician tu juego mediante el botón Jugar del Centro de aplicaciones, conceden a tu aplicación el conjunto de permisos configurados en la pestaña de detalles de la aplicación del panel de aplicaciones.
Debido al elevado porcentaje de jugadores que llegan a tu aplicación mediante el Centro de aplicaciones, esta será la ruta de autenticación habitual. Para garantizar un inicio de sesión fluido desde el Centro de aplicaciones, configura el conjunto de permisos concedidos mediante el Centro, de tal modo que coincidan con los que espera tu juego en Facebook.com y en dispositivos móviles.
Para obtener información más detallada, consulta la guía sobre el Centro de aplicaciones.
Si tu juego está disponible en plataformas para móviles y admite el inicio de sesión con Facebook en la versión para móviles, es posible que algunos jugadores ya estén autenticados cuando vayan a jugar en Facebook.com. Es importante que te asegures de que la versión de tu juego para Facebook.com espera el mismo conjunto de permisos que la versión para móviles.
Como se ha descrito anteriormente, los jugadores que llegan al juego pueden haber iniciado sesión o no, en función de si se han autenticado antes en el juego, ya sea jugando en Facebook, mediante el Centro de aplicaciones o mediante la versión para móviles.
Puedes detectar si un jugador ha iniciado antes sesión en el juego de dos formas:
FB.getLoginStatus()
del SDK para JavaScript.signed_request
.Al realizar una llamada a FB.getLoginStatus()
al cargarse el documento, puedes asegurarte de que los jugadores inicien sesión de inmediato cuando carguen el juego. A continuación, puedes usar FB.api()
para acceder al progreso del jugador mediante su identificador de usuario y para recuperar información con fines de personalización, como el nombre, la foto de perfil y lista de amigos del jugador.
FB.getLoginStatus(function(response) { if (response.status === 'connected') { // the user is logged in and has authenticated your // app, and response.authResponse supplies // the user's ID, a valid access token, a signed // request, and the time the access token // and signed request each expire var uid = response.authResponse.userID; var accessToken = response.authResponse.accessToken; } else if (response.status === 'not_authorized') { // the user is logged in to Facebook, // but has not authenticated your app } else { // the user isn't logged in to Facebook. } });
Si el jugador no ha iniciado sesión, puedes llamar a FB.login(...)
para mostrar una versión modal del cuadro de diálogo de inicio de sesión encima de la pantalla inicial del juego. La devolución de llamada de este cuadro de diálogo debe utilizar el mismo método que al llamar a FB.getLoginStatus.
Cuando se carga el juego en Facebook.com, se envía una solicitud HTTP POST a la URL de juegos web de Facebook que hayas determinado. Esta solicitud POST contendrá varios parámetros, incluido signed_request
, que puedes utilizar a efectos de autorización.
El parámetro signed_request
se codifica mediante Base64url y se firma con una versión de HMAC de la clave secreta de la aplicación basada en la especificación OAuth 2.0.
Por lo tanto, cuando se publique en tu aplicación, tendrás que analizarla y verificarla para poder utilizarse. Este proceso se realiza en tres pasos:
238fsdfsd.oijdoifjsidf899
).Estos pasos pueden realizarse en cualquier lenguaje de programación moderno. A continuación, figura un ejemplo en PHP:
function parse_signed_request($signed_request) { list($encoded_sig, $payload) = explode('.', $signed_request, 2); $secret = "appsecret"; // Use your app secret here // decode the data $sig = base64_url_decode($encoded_sig); $data = json_decode(base64_url_decode($payload), true); // confirm the signature $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); if ($sig !== $expected_sig) { error_log('Bad Signed JSON signature!'); return null; } return $data; } function base64_url_decode($input) { return base64_decode(strtr($input, '-_', '+/')); }
El resultado será un objeto JSON como el siguiente:
{ "oauth_token": "{user-access-token}", "algorithm": "HMAC-SHA256", "expires": 1291840400, "issued_at": 1291836800, "user_id": "218471" }
Al analizar el parámetro signed_request
, podrás detectar si el jugador actual se ha autenticado en tu juego. Si lo ha hecho, el parámetro signed_request
contendrá su identificador de usuario, que puedes usar para recuperar información de personalización y el progreso en el juego. Puedes intercambiar el parámetro signed_request
por un identificador de acceso y utilizarlo para acceder a la API Graph y aumentar la personalización.
La primera vez que un jugador acceda a tu juego, debes invitarle a autenticarse mostrándole el cuadro de diálogo de inicio de sesión. El inicio de sesión en el lado del cliente mediante el SDK para Javascript es el proceso de inicio de sesión recomendado a efectos de autenticación. Los desarrolladores pueden mostrar gráficos sencillos del juego antes de abrir un cuadro de diálogo de inicio de sesión y tras cancelar dicho cuadro.
La versión para JavaScript del cuadro de diálogo de inicio de sesión es exclusiva de los juegos en Facebook y se activará en modo async
dentro del marco iframe
. Por lo tanto, aparecerá como un elemento emergente modal encima del resto del contenido del juego, en lugar de como una ventana independiente del navegador.
Este aspecto es importante, ya que significa que el cuadro de diálogo puede invocarse directamente desde el código, y no como parte de un evento de la interfaz de usuario, sin que lo bloqueen los métodos de detección y bloqueo de elementos emergentes.
Como resultado, puedes usar FB.getLoginStatus()
para comprobar si el jugador actual se ha autenticado antes en tu juego y, si no lo ha hecho, mostrar al instante el cuadro de diálogo de inicio de sesión encima del contenido del juego llamando a FB.login()
, sin necesidad de mostrar un botón “Iniciar sesión”.
A continuación, se incluye un ejemplo:
// Place following code after FB.init call. function onLogin(response) { if (response.status == 'connected') { FB.api('/me?fields=first_name', function(data) { var welcomeBlock = document.getElementById('fb-welcome'); welcomeBlock.innerHTML = 'Hello, ' + data.first_name + '!'; }); } } FB.getLoginStatus(function(response) { // Check login status on load, and if the user is // already logged in, go directly to the welcome message. if (response.status == 'connected') { onLogin(response); } else { // Otherwise, show Login dialog first. FB.login(function(response) { onLogin(response); }, {scope: 'email'}); } });
Independientemente del método de inicio de sesión que utilices, disponer de una identidad real en tu juego te ayudará a crear excelentes funciones sociales que contribuirán a la retención y a la distribución del juego.
El inicio de sesión es el primer paso antes de utilizar muchas de estas funciones, que se pueden crear mediante los productos que figuran a continuación:
En Prácticas recomendadas para los juegos en Facebook, encontrarás más sugerencias para utilizar el inicio de sesión con Facebook de forma eficaz en tu juego.