9

我想用 javascript 和 PHP 构建一个登录系统,让用户使用现有帐户登录我的网站。

他们至少应该能够使用这些帐户...

  • Facebook
  • 推特
  • 谷歌
  • 雅虎
  • 开放ID

如果他们没有上面的登录名,加上在我的网站上创建帐户的选项。

我在下面看到了所有这些服务,它们提供了我想做的事情,

我想自己构建它或使用一些开源项目。换句话说,我不希望第三方像上面的网站那样处理这个问题。

那么有谁知道是否存在可以处理这个问题的开源项目,或者指出我应该如何创建它的方向?(我可以做 PHP 和 javascript,所以更多地询问设计理论/项目流程,而不是如何编码)

我知道可能会有类似的问题,但我还没有找到我要找的东西。

4

3 回答 3

4

不幸的是,这并不是那么简单。我不知道任何现有的图书馆,所以这里有一些关于需要做什么的想法。我将假设您想要创建一个开源项目——如果这是错误的,请忽略与您项目的其他可能用户有关的部分。

协议

Google 和 Yahoo 都是 OpenID 提供商,因此您很容易从列表中获得三分。我为此推荐LightOpenID。(免责声明:我写了 LightOpenID)

Twitter 和 Facebook 使用 OAuth,因此您需要找到一个合适的库来支持它。

界面

您可能希望所有方法都有一个统一的登录界面。为此,扩展OpenID Selector可能是一个好主意。

数据库存储

这是最难的部分。您必须将身份验证数据存储在某种数据库中。很多人会想要使用 mysql,有些人会使用 postgresql,有些人甚至可能想要将它们存储在文本文件中。即使您决定只使用 MySQL,php 中也有很多适配器,它们是不可互换的。当然,您可能需要一个库来执行此操作,例如Doctrine,但它可能比您的项目大几个数量级。而且它不会与框架很好地集成。

根据您的需要,最好的解决方案可能是要求用户实现 、 、 等功能addAccount($type, $login, $password)userAuthenticated($login)checkPassword($login, $password)当然为用户提供了最大的灵活性,但需要努力开始使用它。

当然,我并不是说这个解决方案是完美的,甚至对你的情况有好处——这是我现在能想到的最好的。

一体化

为了使用身份验证机制,需要将其集成到应用程序中。所以你不能强制任何特定的界面,但你应该给出一个好的默认值。您不能强制选择数据库,但您应该使其易于实现,并为一些常见情况提供良好、易于使用的示例。所以我建议将协议支持与接口和存储部分分开。

就是这样。我现在想不出别的。

于 2011-09-20T16:48:13.773 回答
3

看看 HybridAuth ( http://hybridauth.sourceforge.net/ ).. 我还没有开始我的工作,但考虑到这个方法我很认真

于 2013-06-09T09:19:43.917 回答
0

简单的方法(我认为你不想要的方法):

Facebook 登录按钮: http: //developers.facebook.com/docs/reference/plugins/login/
Twitter 登录:https ://dev.twitter.com/docs/auth/sign-in-with-twitter

其余的也很容易在谷歌上找到,只花了两分钟。

更难的方法,下载 PHP 库,例如 Facebook-php5 twitter-lib 等,并从您的服务器执行基于 OAuth 的身份验证,并将访问令牌作为“用户”存储在您的系统上。我曾经在某个系统中做过这个,一旦你掌握了它,它就非常有用和简单:)

谢。

于 2011-09-20T16:21:31.380 回答