I'm happy it's clearer now!! 🙂
Yes, a unique device ID would work! In fact, that would be ideal way of making sure content stays available even if a user un- and re-installs the app. However, note that such an ID is not available everywhere — on iOS, for example, you can't access it any more (only a similar ID that's reset when the app is deleted).
In "Find it", I used the Game Center / Google Play player ID instead, but that's also not optimal. It turned out that many users have Game Center deactivated.
In any case, you need to be online for "loginWithKey" to work!
However, that shouldn't be a problem: you can stay a "guest" as long as you want. Whenever "loginWithKey" completes successfully, that guest player will have been converted to a player with key login. All data stays unchanged, and the player object will stay available even when the app goes offline again.
I hope that helps! =)