13

I already published an android app where you can see a list of specific objects and detailed informations about them. The list changes every day but some of the objects can appear again. The application is communicating with a PHP server over HTTP and periodically pulls the list of objects.

I now plan to extend the app to make it possible to rate the objects and add a comment similar to how it is done in the android market. I'd like to avoid forcing the user to sign up for an account for being able to comment.

I see two problems:

  • The comment-system could be abused by spammers
  • A comment could be added from another system

So my questions are:

  • How to protect the system from spam?
  • How to authenticate the application with the server?
  • How do I limit the number of comments to one per user and object?
  • What about the androids device id? Is it unique enough to use it as identifier for the user?
  • Which other problems do you see?
4

4 回答 4

8

2020 评论/评级/评论选项

由于 Socialize 已退出,您可以探索以下几个选项:

  1. 构建您自己的评论/评级实施。就我个人而言,我喜欢 reddit 以及它如何处理嵌套评论和评分。这是我发现的一个很好地实现它的库。请注意,您需要将其与云数据库联系起来。这是基于groupie的。文章实施。很多方法可以做到这一点 - https://stackoverflow.com/a/59472206/668240
  2. Disqus - SDK 即将在 iOS 和 Android 上推出。
  3. BazaarVoice - 商业
  4. 社交网络 SDK,如Facebook、Twitter 等。我个人不喜欢这样,因为我们需要通过各自的网络对用户进行身份验证才能使用 API。这就像我们将我们的应用程序的用户发送到社交网络。如果您对此没有问题-那么它可能适合您

2014 年的传统选项:

您可以试用Socialize SDK,它是开源的,是您正在寻找的评分和评论的一个非常好的 SDK。它已经内置了一个运行良好的评论系统以及一个“喜欢/喜欢”功能,并可以分享到 FB 和 Twitter。每个“实体”(在您的情况下为对象)都可以具有与之关联的元数据。因此,您所要做的就是构建/使用评级小部件,然后将该评级与附加到您的对象的实体一起发送。显示您的评分/评论就像从 Socialize 中检索它们一样简单。

每个对象(来自您的应用程序的元素)都应该与一个实体相关联,该实体具有 URL 形式的唯一键 - 有点像识别您的项目的主键。这个实体可以有元数据——你可以代表你的对象插入的任何数据。完成此操作后,您可以随时检索该元数据。

我已经使用 Socialize 大约一年了。他们在这段时期已经成熟,并且总是渴望在他们所做的事情上做到最好。

查看底部的社交栏。它可以根据您的需要进行定制。

印度宪法

更重要的是 - Socialize 是免费的。

至于你的问题:

  1. Socialize Web 组件中内置了评论审核功能,您可以在其中过滤掉您认为不合适的任何内容。
  2. Socialize 允许您通过 Facebook 和 Twitter 进行身份验证。
  3. 可以通过使用他们的用户和评论 API 来限制每个用户一条评论。
  4. Socialize 同时具有匿名身份验证和社交 A/c 身份验证。我相信您可以删除匿名身份验证。这样可以确保每个用户在评级/评论之前都经过身份验证。
于 2012-04-21T14:08:23.997 回答
2

对于身份验证,您可以像 StackOverflow 那样使用OpenID或Facebook authentication。一旦您对他们进行身份验证,就应该很容易将评论数量限制为每个用户每个对象一个。至于垃圾邮件,您可以遵循 StackOverflow 的模型,并允许用户投票赞成或反对评论或标记为垃圾邮件。也许评论已被投票的用户将拥有更大的权力,并能够将评论标记为垃圾邮件。

于 2010-11-11T18:44:30.663 回答
2

您将需要某种速率限制。 我以前在这个例子中使用过这个。

因此,您需要一个表格,其中包含用户的 ID 以及他们还剩下多少 api 调用,以及他们最后一次调用 api 的时间。然后使用该算法在每次调用方法时更新表中的值。

于 2010-11-11T19:01:16.740 回答
0

通读这个,我认为应该可以为每个案例创建一个 UUID: http ://android-developers.blogspot.de/2011/03/identifying-app-installations.html

然后保留一个隐藏的 api 密钥,该密钥是硬编码的,或者至少每次都以相同的方式计算,或者以受使用时间影响的谜风格进行计算。但是您永远无法确定,破解者/黑客不会发现它并且可能会被滥用,您将永远遇到这个问题。

使用用户的 UUID + api-key 进行身份验证。

于 2012-08-24T18:19:53.950 回答