Как лучше всего добавить систему комментариев/оценок в приложение для Android
Я уже опубликовал приложение android, где вы можете увидеть список конкретных объектов и подробную информацию о них. Список меняется каждый день, но некоторые объекты могут появляться снова.
Приложение связывается с сервером PHP через HTTP и периодически вытягивает список объектов.
Теперь я планирую расширить приложение, чтобы оценить объекты и добавить комментарий, аналогичный тому, как это делается на рынке Android. Я бы хотел, чтобы пользователь не заставлял пользователя регистрироваться в учетной записи для возможности комментировать.
Я вижу две проблемы:
- Систему комментариев можно было бы злоупотреблять спамерами
- Комментарий может быть добавлен из другой системы
Итак, мои вопросы:
- Как защитить систему от спама?
- Как аутентифицировать приложение с сервером?
- Как ограничить количество комментариев на одного пользователя и объекта?
- Как насчет идентификатора устройства андроида? Является ли он достаточно уникальным, чтобы использовать его в качестве идентификатора для пользователя?
- Какие другие проблемы вы видите?
Ответы
Ответ 1
Вы можете опробовать Socialize SDK, который является открытым исходным кодом и действительно хорошим SDK для оценки и комментариев, которые вы ищете. Он уже имеет хорошо функционирующую систему комментариев, встроенную вместе с возможностью "любить/любить" и делиться с FB и Twitter. Каждая "сущность" (объект в вашем случае) может иметь связанные с ней метаданные. Итак, все, что вам нужно сделать, это построить/использовать виджет рейтинга, а затем отправить этот рейтинг с сущностью, прикрепленной к вашему объекту. Отображать свой рейтинг/комментарий так же просто, как получить их из Socialize.
Каждый объект (элемент из вашего приложения) должен быть связан с сущностью, у которой есть уникальный ключ в форме URL-адреса, вроде первичного ключа для распознавания ваших товаров. Этот объект может иметь метаданные - любые данные, которые вы можете вставить от имени вашего объекта. Как только вы это сделаете, вы сможете получить эти метаданные в любое время.
Я использую Socialize уже около года. Они созревают за этот период и всегда стремятся быть лучшими в том, что они делают. Вот ссылка на одно из моих приложений, если вы хотите увидеть Socialize in Action - Конституция Индии
Посмотрите на панель "Общение" внизу. Его можно настроить для ваших нужд.
![Constitution of India]()
Что еще - Общение бесплатное.
Что касается ваших вопросов:
- Существует функция комментариев, встроенная в веб-компонент Socialize
где вы можете отфильтровать все, что вам кажется неуместным.
- Общение позволяет вам проходить аутентификацию через Facebook и Twitter.
- Ограничение одного комментария для пользователя может быть достигнуто с помощью их пользователя
и API комментариев.
- Общение имеет как анонимную аутентификацию, так и Social A/c
аутентификация. Я считаю, вы можете удалить анонимный auth. Так что
убедитесь, что каждый пользователь аутентифицирован до оценки/комментирования.
Ответ 2
Для аутентификации вы можете использовать OpenID, например, StackOverflow или Аутентификация в Facebook. После того, как вы получите аутентификацию, вам будет легко ограничить количество комментариев одним пользователем на объект. Что касается спама, вы можете следовать модели StackOverflow и разрешать пользователям проголосовать за комментарии вверх или вниз или пометить как спам. Возможно, пользователи с комментариями, которые были проголосованы, будут обладать большей мощностью и иметь возможность отмечать комментарии как спам.
Ответ 3
Вам нужно какое-то ограничение скорости. Я использовал этот пример в этом примере раньше.
Итак, вам нужна таблица с идентификатором пользователя и количеством звонков, которые у них остались, а затем, когда их последний вызов api был. Затем используйте алгоритм для обновления значений в таблице каждый раз, когда вызывается метод.
Ответ 4
Прочитав это, я думаю, что должно быть возможно создать UUID для каждого случая:
http://android-developers.blogspot.de/2011/03/identifying-app-installations.html
И затем сохраните скрытый ключ api, который является жестко закодированным или, по крайней мере, каждый раз рассчитывается так же или в стиле загадки, на который влияет время его использования. Но вы никогда не будете уверены, что это не будет обнаружено взломщиками/хакерами и, возможно, подвергнется насилию, у вас всегда будет эта проблема.
Аутентификация с помощью UUID пользователя + api-key.