Skip to main content

Identidad de vinculación principal

El primer requisito de cualquier estrategia de progresión cruzada es determinar qué identidad de jugador abarcará las plataformas de juego. El jugador debe poder iniciar sesión con esta identidad en cualquier dispositivo en el que el juego esté disponible. Para un título de primera parte, suele ser la cuenta de Microsoft (MSA)/cuenta de XBOX. Para muchos terceros, probablemente sea una identidad del editor expuesta a través de una implementación de OpenID Connect. Los dos requisitos de esta identidad de jugador son:
  1. Estar disponible para los jugadores en todas las plataformas en las que puedan jugar al juego
  2. Ser compatible con una llamada de inicio de sesión de PlayFab existente, como LoginWithXbox o LoginWithOpenIdConnect
Más allá de esos dos requisitos, resulta útil que la identidad admita algún tipo de almacenamiento en caché basado en el dispositivo e inicio de sesión silencioso en los lanzamientos posteriores del juego. Esto no es un requisito estricto, pero puede reducir la complejidad del flujo de trabajo o la fricción para el jugador.

Identidad nativa de la plataforma

Una identidad nativa de la plataforma es el sistema de cuentas proporcionado por la plataforma en la que el jugador ejecuta el juego. Algunos ejemplos son:
  • Steam: cuenta de Steam y vale de autenticación (ISteamUser::GetAuthTicketForWebApi)
  • XBOX en PC/consola: XUserHandle de MSA/XBOX y token XSTS
  • PlayStation: identificador en línea/cuenta de PSN
  • Nintendo: cuenta de servicio de Nintendo/identificador de dispositivo
Estas identidades se usan normalmente para crear y reutilizar un PFLocalUserHandle para el jugador activo en un dispositivo determinado (por ejemplo, PFLocalUserCreateHandleWithSteamUser o encapsulando un XUserHandle). También se pueden usar para autenticarse mediante las API de inicio de sesión de PlayFab específicas del proveedor (por ejemplo, LoginWithSteam, LoginWithXbox) cuando corresponda. En escenarios de progresión cruzada, las identidades nativas de la plataforma se vinculan a la identidad de vinculación principal, de modo que el progreso y los derechos siguen al jugador entre plataformas. Los flujos de trabajo recomendados en este documento usan la identidad nativa de la plataforma como contexto de usuario local y la identidad de vinculación principal como ancla multiplataforma.

Opciones de estrategia de vinculación

Este documento explora dos estrategias relacionadas:
  1. Todos los jugadores están obligados a vincular su identidad nativa de la plataforma con su identidad de vinculación principal antes de jugar.
  2. La vinculación entre la identidad nativa de la plataforma y la identidad de vinculación principal es opcional, pero muy recomendada antes de jugar.
La primera estrategia es más fácil de implementar y evita decisiones difíciles para los jugadores que impliquen una posible pérdida de progreso en el futuro. Aumenta la fricción inicial para empezar con el juego y puede generar sentimientos negativos en los casos en que los jugadores no perciban suficiente valor en el requisito de vinculación inicial. Es especialmente inadecuada para muchos juegos gratuitos y para dispositivos móviles que dependen de barreras extremadamente bajas para atraer al mayor número posible de jugadores. La segunda estrategia mejora la experiencia inicial del jugador a cambio de posibles conflictos y decisiones difíciles en el futuro, además de una mayor complejidad de codificación para los desarrolladores. Los jugadores pueden empezar sin ningún requisito adicional de inicio de sesión. Incluso pueden empezar completamente sin conexión si el juego lo admite. Esa flexibilidad puede crear un problema más adelante, cuando decidan vincular. Es posible que la identidad a la que vinculan tenga un progreso preexistente en otra plataforma. Si ese es el caso, establecer el vínculo podría implicar un progreso abandonado o una fusión complicada que el juego tendrá que gestionar. Incluso si los juegos eligen esta estrategia, se recomienda promover la vinculación lo antes posible, describir las ventajas de vincular y advertir de los posibles riesgos de no hacerlo. En última instancia, la elección entre estas estrategias debe basarse en una perspectiva de negocio. Ninguna es claramente superior a la otra. Existen pruebas claras del mercado de que la transición de la opción 2 a la opción 1 después del lanzamiento genera insatisfacción en los jugadores. Esto indica la importancia de acertar con esta elección desde el principio y diseñar en torno a ella desde el comienzo.

Estado deseado

Independientemente de la estrategia, el objetivo final es llevar a todos los jugadores al mismo estado. Su identidad de vinculación principal debe estar vinculada con la identidad nativa de la plataforma en todos los dispositivos en los que jueguen. En ese estado, el progreso está vinculado de forma coherente a la identidad de vinculación principal y las identidades nativas de la plataforma también pueden usarse como una identidad proxy eficaz de la identidad principal en todas las plataformas. En algunas plataformas, es posible que la identidad de vinculación principal sea la identidad nativa de la plataforma (juegos de primera parte que se ejecutan en una XBOX). En esos casos, resulta trivial alcanzar el estado deseado. Este documento no los explora en profundidad, ya que las instrucciones existentes de inicio de sesión y vinculación son adecuadas.

LocalUser frente a inicio de sesión

Es importante diferenciar entre dos conceptos relacionados pero separados que existen dentro del SDK de PlayFab. Una llamada de LocalUserCreate construye un objeto de usuario local y devuelve un PFLocalUserHandle sin realizar ninguna autenticación. Identifica y almacena en caché al usuario mediante un identificador local específico de la plataforma o persistente (por ejemplo, encapsulando un XUserHandle) para que pueda reutilizar el mismo contexto local en distintas operaciones e instancias del juego. Esta operación es puramente local: no realiza solicitudes de red, no obtiene un token de entidad ni crea una cuenta de PlayFab. En cambio, una llamada de Login autentica al usuario local con PlayFab y establece una entidad autenticada, incluidos los tokens y los identificadores. La llamada de Login realiza solicitudes de red (como /Client/LoginWithXbox) y respeta marcadores como createAccount, y una vez que se realiza correctamente, el resultado se almacena en caché para que las llamadas posteriores puedan reutilizar el estado autenticado. En resumen, crear un usuario local configura la identidad local y la administración de identificadores necesarias para PlayFab Game Saves, mientras que iniciar sesión es el paso que contacta con PlayFab para autenticar y habilitar las API que requieren una entidad.

Estrategia 1: vinculación obligatoria de la identidad principal

Con el fin de ilustrar esta estrategia, vamos a hablar de un juego de primera parte de XBOX publicado en Steam. El juego usa XBOX/MSA como identidad de vinculación principal. Requiere que todos los jugadores inicien sesión con su cuenta de XBOX/MSA antes de cualquier partida. Sigue usando un LocalUserHandle basado en la identidad de Steam, pero bloquea el inicio de sesión real hasta que el jugador haya creado y vinculado una identidad de XBOX. En los lanzamientos posteriores, puede continuar directamente con la identidad de Steam, ya que se ha comprobado que está vinculada.

Resumen de alto nivel

  • El jugador debe iniciar sesión con la identidad multiplataforma (XBOX/MSA) antes de jugar.
  • Cree un jugador local a partir de la cuenta de la plataforma (Steam), pero retenga el juego en línea hasta que se complete el inicio de sesión de XBOX/MSA.
  • Después del inicio de sesión de XBOX/MSA, vincule la cuenta de la plataforma a la cuenta multiplataforma.
  • Actualice el perfil local de la plataforma para que esté conectado a la cuenta multiplataforma.
  • Los lanzamientos futuros son fluidos: el jugador puede ir directamente a jugar porque el vínculo está establecido.

Explicación detallada

Cree un identificador de usuario local de Steam
  • Llame a PFLocalUserCreateHandleWithSteamUser(serviceConfigHandle, customContext, outLocalUserHandle).
  • Resultado: PFLocalUserHandle; todavía no hay autenticación.
Intente conectarse
  • Llame a PFLocalUserLoginAsync(localUserHandle, /*createAccount*/ false, async).
  • Al finalizar, si PFLocalUserLoginGetResult falla con E_PF_ACCOUNT_NOT_FOUND, desencadene el inicio de sesión de XBOX para arrancar la cuenta.
  • Si PFLocalUserLoginGetResult se realiza correctamente, ya tenemos una cuenta en el estado deseado y está en línea. Flujo de trabajo completado.
Si su título requiere que la identidad multiplataforma permanezca vinculada al usuario actual (por ejemplo, el juego requiere el inicio de sesión de XBOX y espera que el vínculo de XBOX de la entidad coincida con la cuenta de XBOX con la sesión iniciada actualmente), un inicio de sesión correcto en la plataforma por sí solo no es suficiente. Llame a PFAccountManagementClientGetAccountInfoAsync después del inicio de sesión para comprobar que el vínculo multiplataforma coincide con el usuario actual. Si no coincide, la entidad puede estar vinculada a una identidad multiplataforma obsoleta: siga los pasos de Inicio de sesión mediante XBOX y Vinculación de Steam que se indican a continuación para realinearla.
Inicie sesión mediante XBOX
  • Cree PFAuthenticationLoginWithXUserRequest:
    • Establezca createAccount=true para crear la cuenta de PlayFab si es necesario.
    • Proporcione el XUserHandle de su usuario de XBOX con sesión iniciada en el PC.
  • Llame a PFAuthenticationLoginWithXUserAsync(serviceConfigHandle, request, async).
  • Complete con PFAuthenticationLoginWithXUserGetResultSize(...) y PFAuthenticationLoginWithXUserGetResult(...) para obtener PFEntityHandle.
  • Nota: Use PFAuthenticationLoginWithXbox si la variante LoginWithXUser no está disponible. Esto requiere que extraiga usted mismo el token XSTS del XUserHandle.
Vincule Steam a la cuenta de PlayFab autenticada (respaldada por XBOX)
  • Cree una solicitud de vinculación de cliente con el vale de autenticación de Steam actual (de ISteamUser::GetAuthTicketForWebApi o su equivalente en su integración; confirme el nombre exacto de la función en su código).
  • Llame a PFAccountManagementClientLinkSteamAccountAsync(entityHandle, linkRequest, async).
  • Nota: “LinkSteamAccount” está en Account Management, no en Authentication.
  • Después de que se realice correctamente, la identidad de Steam del jugador queda vinculada a la cuenta de PlayFab respaldada por XBOX.
Asocie el usuario local de Steam a una entidad (después de la vinculación)
  • Llame de nuevo a PFLocalUserLoginAsync(steamLocalUserHandle, /*createAccount*/ false, async).
  • PFLocalUserLoginGetResult ahora se realiza correctamente; el PFEntityHandle resultante queda enlazado al usuario local de Steam.
Funcionamiento normal en adelante
  • Game Saves y otras API en línea usan el PFEntityHandle autenticado.
  • Los lanzamientos posteriores del juego pueden ir directamente a jugar porque toda la vinculación está establecida.
Notas
  • PFLocalUserCreateHandleWithSteamUser no inicia sesión por sí solo, pero intentar llamar a PFGameSaveFilesAddUserWithUiAsync genera un intento de inicio de sesión. Asegúrese de haber pasado por el flujo de vinculación de cuentas antes de esa llamada.

Control de conflictos de vinculación

Pueden surgir dos conflictos distintos al vincular Steam a la entidad respaldada por XBOX. Cada uno requiere una solución diferente: Flujo recomendado:
  • Después del inicio de sesión de XBOX, llame a PFAccountManagementClientGetAccountInfoAsync(xboxEntity, getInfoRequest, async) para obtener la información de la cuenta e inspeccionar las identidades vinculadas.
  • Si la entidad ya tiene vinculada una cuenta de Steam diferente:
    • Advierta al jugador de que continuar quita la asociación antigua de Steam de esta entidad. Obtenga el consentimiento.
    • Llame a PFAccountManagementClientUnlinkSteamAccountAsync(xboxEntity, unlinkRequest, async) para quitar el vínculo de Steam existente.
    • Luego llame a PFAccountManagementClientLinkSteamAccountAsync con el vale de Steam actual.
  • Si la llamada de vinculación devuelve E_PF_LINKED_ACCOUNT_ALREADY_CLAIMED (la cuenta de Steam pertenece a otra entidad):
    • Advierta al jugador de que esta cuenta de Steam está asociada a una cuenta de PlayFab diferente y de que vincularla aquí elimina esa asociación.
    • Reintente con forceLink=true previo consentimiento.
Esto preserva la capacidad de decisión del jugador y evita anular vínculos de forma no intencionada, a la vez que proporciona una vía clara para conciliar las identidades.

Flujo de ejemplo en C++ (barrera inicial de Steam, arranque con XBOX, vinculación de Steam, nuevo inicio de sesión con Steam):

Este ejemplo usa variables static XAsyncBlock para simplificar la administración de la duración. El código de producción debe asignar los bloques asincrónicos dinámicamente (por ejemplo, como parte de la estructura de contexto) para admitir llamadas simultáneas o reentrantes.
Notas de implementación:
  • Use E_PF_ACCOUNT_NOT_FOUND para decidir la vía de arranque de XBOX; controle los demás errores por separado.
  • Siga usando el PFLocalUserHandle de Steam; el inicio de sesión de XBOX específico del proveedor devuelve un entityHandle que se usa solo para vincular Steam.
  • Después de vincular, inicie sesión de nuevo con Steam para enlazar la entidad al LocalUser.
  • Asegúrese de obtener un vale de Steam nuevo para la vinculación.
  • Cierre los identificadores cuando ya no los necesite (PFLocalUserCloseHandle, PFEntityCloseHandle).

Estrategia 2: vinculación opcional de la identidad principal

En este escenario, el juego se ejecuta en Steam y usa XBOX/MSA como identidad de vinculación principal. Los jugadores pueden empezar a jugar sin iniciar sesión inmediatamente en XBOX/MSA. El juego fomenta la vinculación temprana con ventajas y advertencias claras, pero el juego inicial no está bloqueado.

Resumen de alto nivel

  • Cree un jugador local con la cuenta de la plataforma (Steam) e intente jugar en línea sin crear una cuenta nueva.
  • Si la conexión funciona, continúe; si no, ofrezca una elección:
    • Iniciar sesión con la identidad multiplataforma (XBOX/MSA) para crear una cuenta unificada, o
    • Crear ahora una cuenta solo de plataforma y empezar a jugar inmediatamente.
  • Fomente la vinculación temprana con XBOX/MSA explicando las ventajas y los riesgos.
  • Cuando el jugador elija vincular:
    • Si la vinculación se realiza correctamente de forma directa, siga jugando con una cuenta unificada.
    • Si la cuenta de XBOX/MSA ya tiene progreso en otro lugar, haga una pausa y pregunte qué progreso conservar (conciliación):
      • Conservar el progreso de XBOX/MSA y asociar la cuenta de la plataforma actual.
      • Conservar el progreso de la plataforma actual y aplazar la vinculación.
  • Después de vincular, actualice el perfil local de la plataforma para que esté conectado a la cuenta unificada.
  • Los lanzamientos futuros son fluidos: el jugador puede ir directamente a jugar (suponiendo que la vinculación no se haya aplazado).

Explicación detallada

Cree un identificador de usuario local de Steam
  • Llame a PFLocalUserCreateHandleWithSteamUser(serviceConfigHandle, customContext, outLocalUserHandle).
  • Resultado: PFLocalUserHandle; todavía no hay autenticación.
Intente conectarse (vía silenciosa de Steam)
  • Llame a PFLocalUserLoginAsync(localUserHandle, /*createAccount*/ false, async).
  • Al finalizar:
    • Si PFLocalUserLoginGetResult se realiza correctamente, use el PFEntityHandle resultante y continúe en línea.
      • Compruebe si la cuenta respaldada por Steam ya está vinculada a XBOX/MSA. Llame a PFAccountManagementClientGetAccountInfoAsync(entityHandle, getInfoRequest, async) e inspeccione las identidades vinculadas. Si no está vinculada, pida al jugador que vincule XBOX con el flujo que se indica a continuación (sin bloqueo), para que la progresión cruzada futura funcione sin problemas.
    • Si PFLocalUserLoginGetResult falla con E_PF_ACCOUNT_NOT_FOUND, el jugador permanece sin conexión hasta que se cree una cuenta. Ofrezca dos opciones:
      • Crear ahora una cuenta de PlayFab respaldada por XBOX: inicie sesión con XBOX/MSA (por ejemplo, PFAuthenticationLoginWithXUserAsync).
      • Iniciar sesión con Steam ahora y empezar a jugar: llame a PFLocalUserLoginAsync(localUserHandle, /*createAccount*/ true, async) para crear una cuenta de PlayFab respaldada por Steam enlazada al identificador local; si se realiza correctamente, use el PFEntityHandle resultante para continuar en línea inmediatamente.
    • Para otros errores, contrólelos correctamente (reintento/retroceso).
Pida vincular XBOX (sin bloqueo)
  • Presente las ventajas de vincular (progresión cruzada, portabilidad de derechos).
  • Ofrezca el inicio de sesión con XBOX/MSA.
Inicie sesión mediante XBOX (arranque o vinculación tardía con detección de conciliación)
  • Si el jugador inicia la vinculación de XBOX más tarde (ya tiene un PFEntityHandle respaldado por Steam de la sesión actual):
    • No cree una cuenta respaldada por XBOX nueva.
    • Intente vincular la identidad de XBOX directamente a la cuenta respaldada por Steam actual llamando a la API de vinculación adecuada (por ejemplo, PFAccountManagementClientLinkXboxAccountAsync(currentSteamEntity, linkRequest, async)).
    • Si la vinculación se realiza correctamente, la identidad de XBOX/MSA queda vinculada; continúe con el funcionamiento normal.
    • Si la vinculación falla con un error de vínculo preexistente/conflicto (la identidad de XBOX ya está vinculada en otro lugar), entre en el modo de conciliación de cuentas. Realice inmediatamente el inicio de sesión de XBOX/MSA con createAccount=false (por ejemplo, PFAuthenticationLoginWithXUserAsync) para obtener el PFEntityHandle respaldado por XBOX y luego recupere los metadatos del perfil para dar contexto antes de preguntar al jugador. Tras el consentimiento, continúe con las decisiones de vinculación.
  • Si el jugador no tiene una cuenta existente para XBOX (vía de arranque):
    • Primero intente el inicio de sesión de XBOX/MSA con createAccount=false mediante PFAuthenticationLoginWithXUserAsync (o PFAuthenticationLoginWithXboxAsync cuando LoginWithXUser no esté disponible).
      • Si el inicio de sesión se realiza correctamente: la cuenta de XBOX/MSA ya tiene una cuenta de PlayFab y probablemente un progreso existente. Entre en el modo de conciliación de cuentas para elegir qué progreso conservar.
      • Si el inicio de sesión falla con E_PF_ACCOUNT_NOT_FOUND: continúe con la creación de la cuenta de PlayFab iniciando sesión de nuevo con createAccount=true.
    • Complete con PFAuthenticationLoginWithXUserGetResultSize(...) y PFAuthenticationLoginWithXUserGetResult(...) para obtener PFEntityHandle.
Vincule Steam a la cuenta de PlayFab autenticada (respaldada por XBOX)
  • Aplicable cuando acaba de crear una cuenta de PlayFab respaldada por XBOX nueva (sin vínculos de Steam existentes).
  • Si entró antes en la conciliación de cuentas, las decisiones de vinculación y las acciones de forceLink necesarias se controlan allí; omita este paso.
  • Cree una solicitud de vinculación de cliente con el vale de autenticación de Steam actual (de ISteamUser::GetAuthTicketForWebApi o su integración).
  • Llame a PFAccountManagementClientLinkSteamAccountAsync(entityHandle, linkRequest, async) con forceLink=false (valor predeterminado). Se espera que esto se realice correctamente para una cuenta nueva.
  • Si la vinculación falla, trátela como una condición de error (conflicto inesperado o error de autenticación). Muestre un error al jugador y considere pedirle que inicie sesión de nuevo antes de reintentar.
  • Después de que se realice correctamente, la identidad de Steam del jugador queda vinculada a la cuenta de PlayFab respaldada por XBOX.
Asocie el usuario local de Steam a una entidad (después de la vinculación)
  • Llame de nuevo a PFLocalUserLoginAsync(steamLocalUserHandle, /*createAccount*/ false, async).
  • PFLocalUserLoginGetResult ahora se realiza correctamente; el PFEntityHandle resultante queda enlazado al usuario local de Steam.
Funcionamiento normal en adelante
  • Game Saves y otras API en línea usan el PFEntityHandle autenticado.
  • Los lanzamientos posteriores del juego podrán ir directamente a jugar porque toda la vinculación está establecida.
Notas
  • No bloquee el juego inicial con el inicio de sesión de XBOX/MSA; pídalo pronto, pero permita que los jugadores lo aplacen.
  • PFLocalUserCreateHandleWithSteamUser no inicia sesión por sí solo. Asegúrese de que los flujos de vinculación se completan antes de llamar a las API que desencadenan el inicio de sesión, como PFGameSaveFilesAddUserWithUiAsync.

Conciliación de cuentas (progreso existente en XBOX/MSA)

Cuando un jugador inicia sesión con una cuenta de XBOX/MSA que ya tiene progreso (por ejemplo, de una consola u otra plataforma), debe evitar crear a ciegas una cuenta nueva o anular los vínculos existentes. Use un enfoque prudente en dos fases para detectar y conciliar.
Redacción de cara al jugador: En la documentación para desarrolladores usamos “conciliación”. Para la interfaz de usuario del jugador, prefiera términos más claros como “Selección de perfil de juego”, “Elegir progreso” o “Conservar el progreso existente” para reducir la confusión y enfatizar que el jugador está seleccionando un perfil con el que continuar (no fusionando).

Fase de detección

  • Se puede entrar en la conciliación por dos vías:
    1. Se detecta una cuenta de XBOX/MSA existente: intente el inicio de sesión de XBOX/MSA con createAccount=false.
      • Si el inicio de sesión se realiza correctamente, la identidad de XBOX/MSA ya tiene una cuenta de PlayFab y probablemente un progreso existente: entre en la conciliación.
      • Si el inicio de sesión falla con E_PF_ACCOUNT_NOT_FOUND, continúe con el arranque (createAccount=true). No es necesario entrar en la conciliación.
    2. Se detecta un conflicto de vinculación tardía: al vincular XBOX/MSA a la cuenta respaldada por Steam actual, la vinculación falla con un error de vínculo preexistente/conflicto (la identidad de XBOX ya está vinculada a una identidad de Steam diferente).
      • Realice inmediatamente el inicio de sesión de XBOX/MSA con createAccount=false (por ejemplo, PFAuthenticationLoginWithXUserAsync) para obtener el PFEntityHandle respaldado por XBOX.
      • Recupere los metadatos del perfil (por ejemplo, progresión reciente, ranuras de guardado, marcas de tiempo) para presentar contexto.
      • Entre en la conciliación para decidir qué progreso conservar.

Fase de conciliación

  • Recomiende la opción sencilla: conservar el progreso de XBOX/MSA (identidad de vinculación principal) y abandonar el progreso local de Steam. Esto preserva el ancla multiplataforma y evita fusiones complejas.
  • Los jugadores tienen en la práctica tres opciones (los juegos pueden decidir ofrecer solo 1 o 2 de ellas):
    1. Conservar el progreso de XBOX/MSA (recomendado): proceda a vincular la cuenta de Steam actual a la cuenta de PlayFab respaldada por XBOX existente.
    2. Conservar el progreso de Steam actual y cancelar la vinculación: continúe con la cuenta respaldada por Steam por ahora; no vincule ni anule los datos de XBOX/MSA. Ofrezca la vinculación de nuevo la próxima vez.
    3. Conservar el progreso de Steam actual y abandonar el progreso de XBOX: cambie a la cuenta respaldada por Steam y descarte intencionadamente el progreso de XBOX/MSA. Esta vía requiere una consideración explícita de diseño del juego y no debe intentarse a la ligera, especialmente si otras identidades nativas de la plataforma ya están asociadas a la cuenta de XBOX. En este documento no cubrimos los detalles de implementación de este escenario.
  • Antes de confirmar:
    • Llame a PFAccountManagementClientGetAccountInfoAsync para la entidad de XBOX a fin de inspeccionar los vínculos de proveedor existentes y comprobar si ya existe un vínculo de Steam.
    • Si la entidad tiene vinculada una cuenta de Steam diferente, advierta al jugador de que esta asociación de Steam existente se quita de la entidad antes de poder agregar la nueva. Esto requiere llamar a PFAccountManagementClientUnlinkSteamAccountAsync antes de vincular la cuenta de Steam actual. forceLink no resuelve este escenario.
    • Si la cuenta de Steam actual está vinculada a una entidad diferente, llamar a PFAccountManagementClientLinkSteamAccountAsync devuelve E_PF_LINKED_ACCOUNT_ALREADY_CLAIMED. Advierta de que la vinculación aleja la identidad de Steam de la otra entidad y luego reintente con forceLink=true previo consentimiento.

Acciones de confirmación (según la elección del jugador)

  • El jugador elige el progreso de XBOX/MSA:
    • Asegúrese de haber obtenido la entidad de inicio de sesión de XBOX (realice PFAuthenticationLoginWithXUserAsync con createAccount=false si no se hizo ya durante la detección).
    • Si la entidad de XBOX ya tiene vinculada una cuenta de Steam diferente, llame primero a PFAccountManagementClientUnlinkSteamAccountAsync para quitarla.
    • Vincule la cuenta de Steam actual a la cuenta respaldada por XBOX. Si la llamada devuelve E_PF_LINKED_ACCOUNT_ALREADY_CLAIMED (Steam está en otra entidad), reintente con forceLink=true previo consentimiento.
    • Inicie sesión de nuevo con el usuario local de Steam (PFLocalUserLoginAsync(..., /*createAccount*/ false, ...)) para enlazar la entidad.
  • El jugador elige el progreso de Steam:
    • Si todavía no existe una cuenta de PlayFab para Steam, créela/enlácela mediante PFLocalUserLoginAsync(..., /*createAccount*/ true, ...).
    • Aplace el vínculo de XBOX; permita jugar inmediatamente. Ofrezca la vinculación de nuevo la próxima vez.

Notas

  • Recupere y muestre siempre contexto suficiente para informar la decisión del jugador.
  • Registre telemetría de los resultados de la conciliación para mejorar los avisos y los valores predeterminados con el tiempo.

Diagrama de flujo de la estrategia 2

El diagrama siguiente muestra el árbol de decisiones completo. Todas las vías convergen en un único nodo terminal donde el jugador alcanza un estado en el que puede jugar. Diagrama de flujo de la estrategia 2 que muestra el árbol de decisiones completo desde la creación del usuario local de Steam, pasando por el inicio de sesión, la vinculación de cuentas y las vías de conciliación.

Consulte también

Última modificación el 28 de agosto de 2026