0

我想有一个系统,我的用户可以邀请他们的朋友。我们不希望在发送邀请链接时使用 URL 缩短器,但链接相对较短也很重要。我认为实现这一点的最佳方法是给每个用户一个“个人资料用户名”,如“tonyamoyal12”,并让他们根据需要请求一个新的唯一用户名。

当我的用户发出邀请时,它会发出一个类似http://mydomain/invite/profile_username的 URL,基本上如果被邀请者在该 URL 登录,邀请者就会获得信用。谁能想到这种方法的缺点?大多数邀请 URL 都有哈希值来验证邀请的完整性,但我认为我的方法效果很好。

更新 配置文件用户名是 INVITER 而不是 INVITEE 的用户名。因此,用户在 INVITER 的个人资料页面上注册,因此邀请者会因为让某人在他的页面上注册而获得“积分”。

谢谢!

4

7 回答 7

2

在这些类型的系统中,您通常不会在被邀请者实际注册之前分配任何用户数据(即用户名),并且根据您的框架让这种 URL 工作可能有点痛苦'正在使用。

流程通常是:

  1. 邀请用户,该用户向他们发送电子邮件。
  2. 受邀者通过电子邮件中的链接点击进入网站的主注册页面。
  3. 受邀者使用他们选择的有效用户名进行注册,并基于一些唯一的随机密钥(包含在点击链接中),您可以对所涉及的两个用户执行您的业务逻辑(添加到朋友列表或其他)。

生成您自己的用户名的缺点是它们比随机数更容易被猜到,因为您可能会在其中使用英文单词。如果您生成并分配随机用户名(即“s243k2ldk8sdl”),受邀者将不会高兴,因为他们必须做额外的工作来更改用户名,或者以某种方式记住该名称。

编辑,因为我不太了解这个问题。

我认为该方案很好,除了我只会在 URL 中使用邀请者的用户名,并且不允许他们更改它(为什么允许它?)。唯一的问题是,如果对邀请的数量有某种限制(或者每个邀请都有奖励),您希望使用某种仅对邀请者有效的唯一哈希值来保护每次点击网址。

编辑 2

由于系统中的用户没有分配用户名,您可以选择任何一种方式。允许以先到先得的方式分配“用户名”会很好,因为这样可以让每个人更容易地与朋友分享他们的 URL,因为它很容易记住并且可以简单地输入。但是,如果注册需要一个唯一的密钥......在这种情况下,不实现用户名并将每个人引导到某种单一的注册页面会更简单。

于 2009-12-23T20:53:37.203 回答
1

为什么不创建自己的定制 URL 缩短?

如果您避免 URL 缩短的原因是您不想依赖外部公司,那么这对您来说可能是一个很好的解决方案。

于 2009-12-23T20:31:13.537 回答
1

好吧,如果网站很大,您会遇到名称冲突,并且您将依赖邀请者输入被邀请者的姓名,而他们可能做得不好。

如果你想这样做,那么你将不得不处理名称冲突。

也有可能有人会出现并决定随机输入名称以查看他们是否被击中。假设我想多管闲事并监视一个朋友,看看他们是否正在向其他朋友发送邀请。

编辑:嗯,好的。好吧,如果他们只是单击链接转到邀请者,那么这不是问题。这似乎很正常,暴露的用户名也不是什么秘密。

于 2009-12-23T20:32:24.313 回答
1
  1. 您无法独立跟踪邀请。在某些时候,您可能想知道用户发出了多少邀请与接受了多少邀请。使用这个单一的 URL 系统,您无法跟踪该信息。

  2. 机器人很容易被写入垃圾邮件这样的系统。(也许在结果页面上使用验证码解决)

于 2009-12-23T20:57:15.777 回答
1

您可以为每个邀请创建一个唯一的散列,并保持散列与用户名的关联。这将需要一些存储开销,但您可以通过邀请过期来帮助解决这个问题。

因此http://mydomain/invite/RgetSqtu将是一个示例链接,其中包含一个存储 RgetSqtu/profile 直到被使用的数据库表。

如果找不到哈希,您可能希望提供一个有用的错误页面,如下所示:

很抱歉,找不到您输入的邀请。这可能是由于邀请输入错误、已被使用或太旧(邀请在 3 天后过期)造成的。

于 2009-12-23T21:43:29.660 回答
0

我建议在查询字符串中传递邀请者的用户名,并让该查询字符串在新用户注册页面上填充可编辑或不可编辑的文本框。这样一来,您仍然只有一个注册页面,URL 很短,并且用户可以通过推荐朋友获得信用。

http://mydomain/invite/register.html?inviter= invitersUsername

导致

名字:_________
姓:_________推荐人
invitersUsername

于 2009-12-23T21:02:31.847 回答
0

如果我正确理解设置,现有用户通过提供他们朋友的电子邮件来创建邀请,您的系统将使用 [inviteUrl]/[inveter'sUserName] 向其发送邮件。因此,如果我发送邮件邀请您,则 url 将是:

www.yourThang.com/invite/borisCallens

每次有人访问时,我(用户 borisCallens)都会得到一分。什么会阻止我访问这个网址无数次,从而赢得邀请你的朋友的游戏?

于 2009-12-24T13:30:50.783 回答