It's a little hard to understand the code without seeing the actual order things are executed, but I'll tell you what comes to my mind when I review it.
The very first thing that needs to be executed is the GameCenter login. In the method "onAuthSucceeded", you should immediately move on to "floxLogingamecenter". That method should do almost exactly the same that was done in the class constructor of the code I posted last time.
In the method "onAuthSucceeded", I don't quite understand the following line:
if (Player != null && player.GID == floxPlayerKey)
"Player" with an uppercase "P" is the class, it will never be null. That's probably a typo.
But anyway, even "Player.current" will never be null, it always returns an object (that's a feature of Flox, so you never have to fear of a null reference here).
But what I don't understand is how you can check for "floxPlayerKey" — from what I see, that only becomes available in the method "floxLogingamecenter", which hasn't been called yet!
You really need to step through the code with the debugger. Are you doing that? Check out what happens in each line after the other. Set a breakpoint in all callbacks, so you are sure to be able to step through them — Flox relies heavily on asynchronous callbacks.
In any case, back to "floxLogingamecenter": What you need to do here is, once you have "myPlayerId", check if "Player.current as CustomPlayer" has the same value inside "GID". (Just as I'm doing here. Now, there is null reference check, because the "as" operator could return null.)
It works like this: if the player was already authenticated in the past, "player.GID" will have the correct value (the same as the game center's player ID). If those values do not match, and only then, you need to make a login with the Flox player.
In Flox, a login is merely a way to load a Player object. If you've already got the correct player, there's no need to login.
Now that you've got the right player object (either by logging in, or by just using the player object that's already there), you can start loading the saveGame. There's only one case where you need to create a new SaveGame: when, on loading, it turns out that no SaveGame is found (HttpStatus.NOT_FOUND). I don't know why you are creating a SaveGame object (so) in the code you labeled "Creating the save game".
What *could* be the actual issue here is that you don't work with callbacks the right way. When a method returns its result in a callback, you have to continue your logic inside that callback, not outside. Like in this example:
var saveGame:SaveGame = null;
Entity.load(SaveGame, someID, function onComplete(loadedSaveGame:SaveGame):void
saveGame = loadedSaveGame;
}, /* ... */);
trace(saveGame); // will output "null"!!!
As you can see, you can't continue outside the callback -- the "trace" is executed long before "onComplete" is executed! Instead, you will probably want to call a method from inside "onComplete" that moves on with your logic.
I might be mistaken, but maybe that's the part that's giving you trouble. Again: the debugger will show you what's happening -- don't go on without it!
I hope that points you in the right direction!!