У меня есть приложение, в котором пользователи могут добавлять оценки, и я не хочу, чтобы они регистрировались для этого, но я также не хочу, чтобы боты могли легко играть с оценками.
Есть ли способ, которым я могу быть разумно (не обязательно на 100%, но я не хочу использовать реактивные эвристические методы) уверен, что мои пользователи — люди? Без необходимости ввода CAPTCHA/входа/других действий. Обычно я бы сказал, что это невозможно, но поскольку мое приложение работает на Android, я думаю, что мы можем сделать лучше, чем ничего.
адрес Gmail.
Моя первая мысль состояла в том, чтобы получить их адрес gmail от AccountManager
, но я не вижу способа проверить, что им принадлежит этот адрес электронной почты, т.е. бот мог бы просто отправлять выдуманные электронные письма на мой сервер, так что я не думаю, что это может работать (и я не хочу, чтобы они аутентифицировали мое приложение, используя свою учетную запись Google; они вряд ли будут это делать).
ГКМ
Моей следующей мыслью было использовать Google Cloud Messaging. Я могу получить идентификатор облачного обмена сообщениями с устройства, отправить его на свой сервер, отправить случайное облачное сообщение с сервера обратно на устройство и отправить это сообщение обратно на сервер. Я думаю, это, по крайней мере, подтверждает, что у них есть устройство Android с учетной записью Gmail, что достаточно хорошо.
смс
Конечно, я мог бы отправить им SMS, но это стоит денег, а чтобы быть беспрепятственным, мне нужно иметь разрешение на чтение их сообщений, чего я действительно хотел бы избежать (тем более, что рейтинг — необязательная функция).
Сервер лицензирования Android
Возможно, можно использовать библиотеку проверки лицензий, чтобы получить подписал заверение Google в том, что пользователь загрузил его из магазина, но из-за характера моего приложения я не могу разместить его на рынке.
Идентификатор устройства, EMEI, номер телефона и т. д.
Конечно, я не могу использовать их. Боты могли их просто выдумать!
Так что GCM выглядит лучшим (и единственным) вариантом. Кто-нибудь может придумать что-нибудь еще?