【问题标题】:saving state at client Side or application variable in PHP在客户端或 PHP 中的应用程序变量中保存状态
【发布时间】:2013-09-14 02:37:34
【问题描述】:

我有一个用户通过FB和Gmail登录的网站,如果A先生通过Facebook来并在网站上成功登录,那么假设他退出并通过Gmail登录,我不会将他视为新用户,但我会将旧用户 ID 分配给他,因为这是同一个人。 所以我认为的解决方案是在用户计算机上放置一个 cookie 并检查他是否是现有用户,这样我们就不会再次注册他,但 cookie 的问题可能是用户清除/关闭浏览器 cookie,从其他 PC 登录。我不知道处理这种情况的最佳场景是什么? 另一个例子可以在登录 Stackoverflow 时使用 Gmail 登录或 Yahoo.etc 任何帮助

【问题讨论】:

  • 使用 OpenID,它会为你处理这一切...openid.net/add-openid
  • @BenCarey 我已经实现了 Google 和 fb 登录,我可以考虑一些未来但现在我已经存在登录
  • google 邮箱与 facebook 邮箱匹配?
  • 您可以推迟 cookie 的过期日期,但这似乎仍然不对:仅仅因为两次登录发生在同一台计算机上并不自然意味着他们是同一个人。你能给你的用户一个选项来“合并”不同的外国账户吗?例如。 “嗨,我是来自 facebook 的 abc。我还有一个 gmail 帐户,即 abc@gmail.com,也请把它当作我。”。
  • @rogeriolino 可能会有所不同

标签: php session cookies single-sign-on session-cookies


【解决方案1】:

我认为你有两个选择:

Cookies

您可以按照您的建议在客户端机器上设置一个有效链接两个帐户的 cookie...

缺点

  1. 如果您使用不同的帐户登录到不同的计算机,则不会链接这两个帐户。
  2. 实际上并没有说通过 Facebook 登录的人和通过 Google 登录的人实际上是同一个人。唯一可以辨别的方法是通过电子邮件地址,但这可能会引起混淆。

OpenID

Open ID 是一项服务,可让您有效地使用任何“主要”帐户登录,包括 Facebook、Google、Yahoo、Microsoft、AOL 等...

有关 OpenID 的更多信息,请参阅here

它完全符合您的要求,但它为您做到了......

我很感激您可能已经在您的网站上编写了 Facebook 和 Google 的登录信息,但是在您的网站上实施 OpenID 库所花费的时间远远超过了管理和处理错误的压力。

查看这些 PHP 库以在您的网站上实现 OpenID 功能:

将其集成到您的网站中确实不会花费很长时间,并且它将消除必须从自定义登录中处理 cookie 等的压力...

【讨论】:

  • 我可以在通过 OpenID (facebook) 登录后获取我的 facebook 好友并进行 API 调用吗?
  • @user1765876 可以,但您需要设置 Facebook 应用并获取访问令牌才能访问 API
猜你喜欢
  • 2017-03-28
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 2013-04-05
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
相关资源
最近更新 更多