Подтвердить что ты не робот

Использование входа в Game Center для загрузки исходного кода на удаленном сервере

Я хочу разрешить пользователям автоматически создавать учетную запись на моем сервере, используя их учетную запись Game Center. Когда мое приложение iOS открывается, для связи с игровым сервером требуется подключение и аутентификация с сервером XMPP. Я пытаюсь найти что-то в GKLocalPlayer, которое является приватным для зарегистрированного устройства, которое я мог бы использовать для создания/проверки имени удаленного пользователя, но единственное, что кажется уникальным для игрока, - это их идентификатор игрока, который довольно популярен.

Я действительно не хочу использовать GameCenter для всего, потому что тогда он разбивает мою пользовательскую базу только на устройства iOS.

Из developer.apple.com

... если ваше приложение подключается к вашим собственным сетевым сервисам, вы можете использовать идентификатор игрока в своей службе для сохранения данных там.

Так как идентификатор игрока не является приватным, как мы можем быть уверены, что это не подделка?

4b9b3361

Ответ 2

Все в GKLocalPlayer можно подделать. То же самое можно сказать и для UIDevice.

Лучшей стратегией является назначение конфиденциальных данных сеанса каждому устройству, которое подключается и предоставляет средства для соединения сеансов устройства с учетными записями через электронную почту проверки. Возможно, включите playerID, чтобы разрешить взаимодействие с данными GameKit, но не как средство идентификации.

Ответ 3

Я не уверен, что идентификатор игрока может быть фальсифицирован, но вы можете создать ключ на основе этого, а также другой уникальный идентификатор, который есть у iOS-пользователей: его UDID. Когда игрок успешно войдет в Game Center, сгенерируйте ключ на основе UDID. Если он соответствует сохраненному значению, вы являетесь золотым. Если нет, вероятно, пользователь на устройстве пыльника, так как они успешно вошли в игровой центр. В этом случае предложите добавить его. Чтобы предотвратить захват сеанса, попросите пользователя подтвердить устройства по электронной почте. Это работает только для устройств iOS, поскольку это связано с игровым центром и UDID.

Альтернативой, которая может работать и с другими платформами, является то, что ваша игра связывается с вашим сервером при первом запуске и вытаскивает с вашего сервера уникальный идентификатор. Всякий раз, когда ваше приложение сообщает счет (или что-то еще), вы отправляете свой собственный идентификатор. Есть способы зашифровать эти данные, но я даже не любитель в этой области. Я там ничего не знаю. (Если вы хотите, посмотрите на отправку "ключей API" вместе с вашим запросом или отправкой "соленых хэшей", но я понятия не имею, что бы вы сделали для вас. Я слышал об этом раньше и подозреваю, что это может помочь. )