Cómo establecer un inventario multiplataforma
Cómo funciona
Inventario multiplataforma permite a los desarrolladores de juegos sincronizar el inventario de un usuario dentro de un juego en diferentes plataformas (Steam, EGS, PlayStation, XBox, etc.), gestionar el inventario y el saldo del usuario y recopilar datos sobre estos.
Los siguientes pasos aseguran la sincronización:
- El jugador vincula sus cuentas de plataforma a la cuenta principal que se utiliza para identificar al jugador en diferentes plataformas.
- Xsolla proporciona el mecanismo para vincular las cuentas de plataforma a la cuenta principal y gestionar la sincronización del inventario multiplataforma.
La solución incluye los siguientes componentes:
- cliente de juego
- servidor de juego
- aplicación web con una interfaz de usuario de vinculación de cuentas
- Xsolla Login para proporcionar la cuenta principal y un mecanismo de vinculación
- Inventario del jugador de Xsolla para almacenar el inventario del usuario
Flujo del usuario
Para vincular una cuenta de plataforma (Steam o EGS) a la cuenta principal, es necesario implementar la identificación de usuario en el juego mediante la cuenta de Xsolla Login o el algoritmo para vincular cuentas en plataformas de videoconsolas.
El algoritmo para vincular la cuenta de videoconsola a la cuenta principal es el siguiente:
- El jugador accede por primera vez al juego en la videoconsola de la plataforma.
- El juego muestra el mensaje que ofrece vincular la cuenta de la plataforma a la cuenta principal.
- Si el jugador confirma la acción:
- se le redirige al lado de la aplicación (p. ej., el sitio web del juego o la aplicación móvil), donde puede autenticarse o crear la cuenta principal.
- Tras autenticarse correctamente en la aplicación, el jugador recibe un código alfanumérico para vincular las cuentas.
- El jugador vuelve a la versión de consola del juego e introduce el código.
- Las cuentas principal y de plataforma se vinculan y la consola del juego muestra el mensaje de confirmación.
- El inventario del jugador en la plataforma se sincroniza con el inventario vinculado a la cuenta principal.
¿Quién puede utilizarlo?
Desarrolladores de juegos que planean un lanzamiento multiplataforma de su juego y quieren establecer una base de datos de jugadores fidelizados al proporcionar a los jugadores acceso a sus compras y recompensas en cualquier plataforma.
Cómo conseguirlo
Para conectar un inventario multiplataforma:
- Conecte el inventario del jugador. Implemente la autenticación de acceso básica para trabajar con los métodos de servidor y la autenticación Xsolla Login basada en el protocolo OAuth 2.0 para trabajar con los métodos de cliente. La autenticación basada en el protocolo OAuth 2.0 también es necesaria para acceder a los métodos API de Login e implementar los métodos de vinculación de cuentas.
- Implemente la interfaz de usuario de vinculación de cuentas, incluyendo:
- autenticación basada en el servidor del juego y gestión de inventario
- autenticación basada en el cliente del juego y gestión de inventario
- métodos de vinculación de cuentas
Interfaz de usuario de vinculación de cuentas
La interfaz de usuario de vinculación de cuentas debe ofrecer las siguientes opciones:
- opción de mostrar un mensaje ofreciendo vincular una cuenta de la plataforma a la cuenta principal
- opción de aceptar o rechazar la vinculación de cuentas
- opción de enviar el código para vincular cuentas si el usuario acepta vincularlas
- opción de mostrar la URL de la aplicación móvil o web que se usa para vincular las cuentas
El mecanismo para autenticar usuarios en la cuenta principal es el siguiente:
- Integrar el widget de Login con la aplicación.
- Se transmite un JWT a la aplicación cuando el usuario se autentica a través del widget. Implementar la capacidad de transmitir un JWT desde la aplicación al método para obtener el código de vinculación y mostrar el código en la interfaz de usuario de la aplicación.
- Implementar autenticación mediante el JWT en el lado del servidor del juego.
- Implementar la transmisión de un token,
user_id
en la plataforma de consola, y el ID de la plataforma al método para vincular a la cuenta principal cuando el usuario accede a la versión de consola del videojuego y envía el código para vincular las cuentas.
Autenticación en el servidor del juego
Para acceder a los métodos API de Login para gestionar el inventario del jugador en el servidor del juego, es necesario configurar la autenticación OAuth 2.0 y obtener un token de acceso al servidor.client_id
y client_secret
, contacte con su gestor del éxito del cliente o envíe un correo electrónico a csm@xsolla.com.- php
<?php
$uri = 'https://login.xsolla.com/api/oauth2/token';
$body = [
'grant_type' => 'client_credentials',
'client_id' => 1,
'client_secret' => 'client_secret'
];
$headers = [
'Content-type: application/x-www-form-urlencoded'
];
$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, http_build_query($body));
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($request);
print_r($response);
Respuesta:
- php
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"token_type":"bearer",
"expires_in":3600,
"scope": ""
}
Gestionar el inventario del jugador en el servidor del juego
Los métodos de gestión de inventario incluyen los siguientes métodos de servidor:
Es necesario transmitir el user_id
del usuario en la plataforma y el ID de la plataforma a estos métodos.
Autenticación en el cliente del juego
Implementa el método API Auth by custom ID para gestionar el inventario del jugador en el cliente del juego. Transmita los siguientes parámetros en la solicitud:
server_custom_id
- identificador único de usuario en el juegosocial_profile.user_id
- identificador único de usuario en la plataforma
Solicitud:
- php
<?php
$uri = 'https://login.xsolla.com/api/users/login/server_custom_id';
$queryParams = [
'publisher_project_id' => 44056
];
$queryParamsString = '?' . http_build_query($queryParams);
$body = '
{
"server_custom_id": "1234567890asdfghjkl",
"social_profile": {
"platform": "xbox_live",
"user_id": "4352354"
}
}
';
$headers = [
'Content-type: application/json',
'x-server-authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
];
$request = curl_init($uri . $queryParamsString);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($request);
Respuesta:
- php
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
Gestionar el inventario del jugador en el cliente del juego
Los métodos de gestión de inventario incluyen los siguientes métodos de cliente:
Para gestionar el inventario del jugador en las plataformas de consola:
- Implemente la transmisión del ID de plataforma a los métodos de cliente para almacenar el saldo de moneda prémium en las plataformas de publicación de consola de acuerdo con la normativa de las plataformas de consola.
- Implemente los siguientes pasos en el servidor del juego para gestionar el inventario del usuario en el cliente de consola:
- El juego recibe un token de acceso al servidor para la tokenización del usuario.
- El juego recibe un JWT por
user_id
del usuario en la plataforma y por ID de plataforma. - El juego transmite el JWT a los métodos de cliente especificados.
Métodos de vinculación de cuentas
Obtener el código de vinculación
Implementar el método API Create code for linking accountpara obtener el código de vinculación y transmitirlo al usuario.
Solicitud:
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://login.xsolla.com/api/users/account/code");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
Respuesta:
- js
{
"code": "123456"
}
Vincular a la cuenta principal
Implemente el método API Link accounts by code, en el cual:
code
- código de vinculaciónpublisher_project_id
- ID del proyecto de Cuenta del editoruser_id
- identificador del usuario en la plataforma
Asegúrese de haber realizado los siguientes pasos antes de llamar al método:
- implementó la interfaz para mostrar el código de vinculación de la cuenta y el formulario para introducir el código recibido.
- Implementó el método para obtener un token de acceso al servidor.
- Implementó el método para obtener el código de vinculación.
- php
<?php
$uri = 'https://login.xsolla.com/api/users/account/link';
$body = '
{
"code": "234155",
"platform": "xbox_live",
"publisher_project_id": "12423354",
"user_id": "4352354"
}
';
$headers = [
'Content-type: application/x-www-form-urlencoded',
'x-server-authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
];
$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($request);
Respuesta:
- php
204 OK
Lista de plataformas
Plataforma | ID de plataforma | Comentario |
---|---|---|
PlayStation Network | playstation_network | - |
Xbox Live | xbox_live | - |
PC Standalone | pc_standalone | - |
Nintendo eShop | nintendo_shop | - |
Google Play | google_play | - |
Apple Store | app_store_ios | - |
Android Standalone | android_standalone | El juego se publica individualmente fuera de las tiendas. |
IOS Standalone | ios_standalone | El juego se publica individualmente fuera de las tiendas. |
Android Other | android_other | El juego se publica en una tienda alternativa en PlayMarket. |
IOS Other | ios_other | El juego se publica en una tienda alternativa en AppStore. |
PC Other | pc_other | - |
Xsolla | xsolla | - |
¿Te ha resultado útil este artículo?
Valore esta página
Prefiero no responder
¡Gracias por tu mensaje!
¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.