We use the Unity SystemInfo-deviceUniqueIdentifier to generate our deviceIds in the Unity SDK. You would need to check with Unity (or test yourself) as to whether these change or not on different installations on the same device. In general it's not a good idea to solely rely on this for authentication as they are prone to change due to factors determined by Unity.
Thank you for the information.
I notice two potential issues with the using deviceUniqueIdentifier. One, as you mention, is that there is no garantee that Unity won't change how the value of SystemInfo.deviceUniqueIdentifier works. Actually, it happened in 5.4 (https://forum.unity3d.com/threads/unique-identifier-details.353256/). Second, according to their documentation, the uniqueId on Windows Standalone will change if there are hardware changes to the computer it is running on, including changing the hard drive.
However, I just found that I can change how the deviceId is configured in DefaultPlatform.cs (Unity SDK), so I suppose I can work around that fairly easily.
Yes you can edit how the SDK handles deviceId generation but doing this is not officially supported. We wouldn't be offer you any support with any issues that may arise from you doing this.
When using Device Authentication, what is the expected behaviour after the app is re-installed on a specific device? Will it be a new user or will it pick up the previous user.
My understanding is that the user if fetched/created based on a device id generated by GameSparks. My experience on mobile has been that the platform holders have removed support for getting the actual device id and that we can't count on it to be similar across different installations.
So, what is the expected behaviour for the different platforms: