Hi, I’m using UGS Authentication with Steam as one of my identity providers.
I also use the UGS Leaderboard, and today I’ve noticed one of my players in a specific leaderboard is ranked twice, using different UGS Player IDs. I know they are the same person because he is my nephew trying to rank up.
I was investigating what he did, and he unlinked his Steam account from the UGS Player in the game by mistake. This happened while trying to switch Steam accounts on the same computer (he was playing with my daughter, trying to beat each other on the ranking positions).
At some point, he must have clicked the Settings menu to unlink the Steam account, and then when logging into my daughter’s account, his account was gone (without a linked identity provider). Then, a new UGS Player was created when he opened the game again with his Steam account.
The Player Management Dashboard is very limited. We, as developers, should have more control over the data set there, we cannot edit anything and also we cannot even try to find a player by name. Luckily, I found both accounts because the Leaderboard displays the player ID and Name.
I’m pretty sure this can happen to more people, so my question is:
What can I do, as a developer, to recover the link or merge both accounts (even when it is a manual process)?
Hi there,
I agree the features available on the Player Management view Dashboard are limited.
Viewing data, searching by Username or External ID and resetting passwords is supported by the Player Management API and an interface for looking up a Player ID by Player Name is provided by the Player Names API.
These are not features currently supported in the Dashboard or Unity CLI but we do want to do that to make it easier for developers to interact with the APIs - and for team members who are not developers to be able to perform common account admin / support operations.
The sort of scenario you describe is typically intended to be handled in game using the existing APIs.
e.g. Developers can provide the option to link and unlink accounts in a game as a player, and use a Cloud Code function to handle transferring or copying data from one profile to another, if that is also something you want to support. Player IDs are expected be persisted locally when switching profiles.
We also have an undocumented REST API that supports Force Linking and Unlinking External IDs which requires know the External ID. It was created for cases where this is strictly necessarily (e.g. Apple developer account migration, where a new studio or publisher is taking over publishing a game as the External ID is scoped to the developer account) but it could also be used to provide to forcibly link / unlink any external ID by an admin. This should be publicly documented later this year, I would like to see it exposed in the Dashboard too.
What can I do, as a developer, to recover the link or merge both accounts (even when it is a manual process)?
The answer to that currently is using the Services Web APIs to look up players and/or provide a Cloud Code function to handle merging data as appropriate. This is functionally we also want to bring to the Dashboard and to the CLI.
Best regards,
Iain
2 Likes
Just adding a little bit more information to add here, Unity also has a raw API package (Redirecting to latest version of com.unity.services.apis), which includes the player authentication : Namespace Unity.Services.Apis.Admin.PlayerAuthentication | Cloud Services Apis | 1.1.0
This significantly facilitates the creation of tooling and systems to manage players via regular Unity scripting.
2 Likes
Thanks for the info, @IainUnity3D and @GabKBelmonte.
It is nice to know there are ways of doing it today, even when the Dashboard is not ready yet.
1 Like