【问题标题】:What is the best way to handle connection to many Twitter accounts?处理与许多 Twitter 帐户的连接的最佳方式是什么?
【发布时间】:2016-05-06 21:46:24
【问题描述】:

我的应用程序需要一个 twitter 帐户来创建帐户并进行身份验证。然后,用户可以根据需要链接任何其他 Twitter 帐户。因此,用户拥有一个主推特帐户,允许他连接到我的应用程序,然后,他可以浏览他之前在应用程序中链接的所有帐户。我的问题是关于 Twitter 端的登录过程。

首先,我考虑过仅在关联新帐户时设置force_login。这样,用户每次想要连接到我的应用程序时都不必在 Twitter 上重新连接。而且,当他想关联另一个帐户时,force_login 会强制他选择正确的帐户。问题是 Twitter 保持连接到最后一个经过身份验证的帐户。因此,如果用户在链接另一个帐户后从我的应用程序中注销,然后使用 twitter 登录,他使用第二个帐户登录,并在我的应用程序上创建一个新用户。示例:

用户有两个 Twitter 帐户:@a 和 @b。他已通过@a 在 Twitter 上进行了身份验证。他注册了我的应用程序,Twitter 向他显示了我的应用程序要求的权限,用户接受,他被重定向到我的应用程序,创建了一个可以使用 @a 进行身份验证的新用户。 然后,他链接@b 帐户。感谢force_login,Twitter 要求他提供凭据。用户登录@b,Twitter 询问权限,然后,该帐户链接到我的应用程序上的用户。我们现在有一个用户可以使用@a 进行身份验证并且链接到@b。 然后,我的应用程序上的会话结束,用户需要重新连接。因为没有force_login,Twitter 看到他已经与授权我的应用程序的帐户连接,因此无需用户采取任何操作即可接受连接。但是,没有人看到该用户与最后一个帐户相关联:@b。因此,我使用@b 进行了登录操作,这意味着创建新用户。 我现在有两个用户:可以使用@a 进行身份验证并链接到@b 的用户1,以及可以使用@b 进行身份验证的用户2。而且我的用户不明白它的@a 帐户在哪里。

所以我的问题是:我必须在任何地方设置force_login 吗?还是有其他方法可以告诉 Twitter 在链接帐户时不要进行身份验证?

编辑了解更多详情:

这并不容易。请记住,许多用户应该管理同一个帐户。一个简单的例子:@Maurice 和@Roy 是@ReynholmIndustries 公司的成员。他们将在我的服务上创建自己的帐户,并在 Twitter 上使用自己的帐户。因此,在我的服务中,我将拥有可以与@Maurice 连接的 User1 和可以与@Roy 连接的 User2。然后,@Maurice 会将@ReynholmIndustries 帐户添加到我的服务中。因此,在使用@Maurice 登录后,他可以管理@Maurice 和@ReynholmIndustries。然后,@Roy 也会添加 @ReynholmIndustries。没有人可以使用@ReynholmIndustries 登录,但@Maurice 和@Roy 可以使用他们自己的帐户进行管理。然后,很明显有人通过@ReynholmIndustries 注册来创建新用户。

困难在于添加新帐户时:UserA 通过在 Twitter 上登录来登录我的服务。他现在被认证为@Maurice 并且在我的服务中作为UserA 并且可以管理@Maurice。然后,他通过在 Twitter 中登录为@ReynholmIndustries 添加了@ReynholmIndustries。他现在在我的服务上被认证为@Maurice,可以管理@Maurice 和@ReynholmIndustries,但在推特上,他现在被认证为@ReynholmIndustries。 后来,他在我的服务上失去了身份验证,然后单击了登录按钮。他在 twitter oauth 表单上被重定向,我们现在有两个选择:

  1. 没有 force_login :他被验证为@ReynholmIndustries,因为这是他登录的最后一个帐户。因此,Twitter 不要求他进行身份验证,他会自动重定向到我的服务,但不是作为使用 @Maurice 进行身份验证的 UserA,而是作为新用户:将使用 @ReynholmIndustries 进行身份验证的 UserC。 UserC 只能管理 @ReynholmIndustries,因为他是新用户。
  2. with force_login :即使他在 Twitter 端通过@ReynholmIndustries 进行身份验证,他也需要提供登录/通行证,并且他一定会选择正确的帐户:@Maurice,以访问 UserA 并管理这两个帐户。但是,每次他必须对我的服务进行身份验证时,他总是必须提供登录/密码。

通过写这篇文章,我意识到这不是问题:如果我的服务有本地身份验证,用户也应该在每次失去身份验证时都输入 login/pass...也许 force_login 确实是正确的选项。您如何看待这一切?

【问题讨论】:

  • 您能说出您使用哪个应用程序连接到 twitter 吗?是安卓吗?还是IOS?还是网络?

标签: twitter login twitter-oauth


【解决方案1】:

对我来说,您的问题似乎与 twitter 完全无关。您只需要在您的应用程序中正确处理登录/注册过程。

根据您的描述,情况如下:

  • 用户使用@a 帐户注册
  • 在内部,您在数据库中创建用户配置文件(我假设您拥有数据库,并不关心什么样的数据库),如下所示:
    • 用户A
    • id = 1(您的内部 id)
    • name = UserA
    • 帐户(相关表)
      • 推特@a
  • 用户又添加了一个 (@b) 帐户
  • 您像这样更新用户配置文件:
    • 用户A
    • id = 1
    • name = UserA
    • 帐户
      • 推特@a
      • 推特@b
  • 用户退出
  • 用户使用@b 帐户重新登录
  • Twitter 批准并重定向回您的应用

现在您说“所以,我使用@b 进行了登录操作,这意味着创建新用户。”。为什么这样? Twitter 对您的应用程序一无所知,但您确实知道。

您在这里要做的只是搜索您的数据库,发现您已经拥有“twitter @b”帐户并且它链接到“UserA”。然后,您只需将“UserA”登录到您的应用程序,而不是创建新用户(无论如何,您不希望不同的用户使用相同的 twitter 帐户,因此 twitter 帐户 ID 在您的数据库中应该是唯一的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多