iphone - para - iniciar sesion apple icloud
Uso del inicio de sesión de Game Center para iniciar el inicio de sesión en el servidor remoto (3)
No estoy seguro de que la ID del jugador pueda ser falsificada, pero podría generar una clave basada en eso junto con la otra ID única que tienen los usuarios de iOS: su UDID. Cuando un jugador inicia sesión exitosamente en Game Center, genere una clave basada en el UDID. Si coincide con un valor almacenado, estás de oro. Si no es así, es probable que el usuario esté en otro dispositivo ya que ha iniciado sesión correctamente en el centro de juegos. En ese caso, ofrezca agregarlo. Para evitar el secuestro de sesiones, haga que el usuario confirme sus dispositivos por correo electrónico. Sin embargo, esto solo funciona para dispositivos iOS, ya que está vinculado a Game Center y UDID.
Una alternativa, que también puede manejar otras plataformas, es hacer que su juego se ponga en contacto con su servidor en la primera ejecución y extraer una ID única generada de su servidor. Cada vez que su aplicación informa un puntaje (o cualquier otra cosa), usted envía su propia identificación. Hay formas de cifrar esos datos, pero ni siquiera soy un aficionado en esa área. No sé nada de uso allí. (Si lo desea, busque el envío de "claves API" junto con su solicitud o el envío de "hash con sal". Pero no tengo idea de lo que eso haría por usted. He oído hablar de eso antes y sospecho que eso puede ayudar. )
Quiero permitir que los usuarios creen una cuenta en mi servidor automáticamente utilizando su cuenta de Game Center. Cuando mi aplicación iOS se abre, requiere una conexión y autenticación con un servidor XMPP para poder comunicarse con el servidor del juego. Estoy tratando de encontrar algo en GKLocalPlayer que sea privado para un dispositivo conectado que podría usar para crear / validar un inicio de sesión de usuario remoto, pero lo único que parece ser único para el jugador es su ID de jugador, que es bastante público.
Realmente no quiero usar GameCenter para todo, porque luego particiona mi base de usuarios solo para dispositivos iOS.
Desde developer.apple.com
... si su aplicación se conecta a sus propios servicios de red, puede usar el identificador de jugador en su servicio para guardar datos allí también.
Dado que el identificador de jugador no es privado, ¿cómo podemos estar seguros de que no se está falsificando?
Parece que esto es posible desde iOS 7 usando:
[localPlayer generateIdentityVerificationSignatureWithCompletionHandler]
Todo en GKLocalPlayer
puede ser GKLocalPlayer
. Lo mismo se puede decir de UIDevice
.
Una mejor estrategia es asignar datos de sesión privada a cada dispositivo que se conecta y proporcionar medios para vincular las sesiones del dispositivo a las cuentas a través de un correo electrónico de verificación. Tal vez incluya el playerID
de playerID
para permitir la interacción con los datos de GameKit, pero no como un medio de identificación.