【问题标题】:Using OpenID to prove Stackoverflow membership使用 OpenID 证明 Stackoverflow 成员资格
【发布时间】:2009-05-19 19:55:59
【问题描述】:

这是交易:
-Flair 非常需要 Facebook 应用程序
-我正在努力学习Facebook平台

因此,我编写了一个小巧的 Facebook 应用程序,将您的 Flair 嵌入到您个人资料侧面的一个框中。 If you're interested and on Facebook;请注意,这是一项正在进行中的工作,容易发生变化并且有很多粗糙的边缘。

但是,我没有优雅的方式从这个小应用中说“这是我的 Stackoverflow 个人资料”。我目前的解决方案是最好的证明this image。坦率地说,这是愚蠢的。并且没有什么可以防止冒充。

没有使用 OpenID 的经验,我想知道是否有某种方式(请提供一些这种方式的示例)让用户向第三方提供他们的 Stackoverflow 身份?


行为已更改为诺多林的回答所建议的行为。
请求以更明智的方式执行此操作declined on UserVoice

【问题讨论】:

  • 我认为这属于 Uservoice?
  • 不是真的,他自己做这件事,而不是要求 SO 为他做这件事。这不是每次看到的反馈或建议
  • 您是否要求“给定一个 OpenID,确定哪个 SO 用户”?我不相信在当前架构下这是可能的。您当前解决方案的可用性可以通过允许用户复制和粘贴整个 SO 配置文件 URL 来改进,而不必只删除 ID 号......这并不是说它有很大的不同。

标签: php facebook openid stackexchange-api


【解决方案1】:

没有办法从 OpenID 获取 StackOverflow ID,反之亦然,但不必要地复杂(与您建议的方法相比)。在我看来,复制和粘贴用户 ID/个人资料 URL 并不是很不方便。

但是,我可以建议某种解决假冒问题的方法。这可能看起来有点愚蠢,但这是我认为确保只有用户自己可以显示徽章的最简单方法。再说一次,我不认为这太不方便了。 (鉴于电子邮件不公开,因此无法使用更传统的电子邮件确认方法。)

  1. 让您的 Facebook 应用程序生成一个随机(字母数字?)代码。 A8IO45QW6T 形式的东西应该可以。
  2. 将此代码保留在 Facebook 应用的服务器端一小段时间(例如 5 分钟)。
  3. 通过将给定代码添加到最后一行,指示用户编辑他们的关于我信息,然后返回 Facebook 并确认。对指定用户的个人资料页面的 HTML 的简单检查将验证所有权。然后,用户可以从他们的关于我文本中删除验证码。

顺便说一句,创建这个 Facebook 应用程序是个好主意。我可以试试看!

【讨论】:

  • 我会尝试这种方法。 Facebook 对此设计的一个微妙之处在于,当显示配置文件(推送模型)时不会调用我的代码(PHP),并且在用户与框交互之前不会运行嵌入的 JavaScript(因此“点击查看声誉”盒子的东西)。
  • @Kevin:“推送模式”确实看起来很奇怪。我确信我已经看到了以某种方式绕过它的 Facebook 应用程序。不能在“onload”事件中执行代码吗?
  • 不。来自 Facebook 开发 wiki:'在配置文件框中,内联脚本被推迟到用户触发第一个“活动”事件。活动事件被认为是 onfocus、onclick、onmousedown 等。基本上任何需要鼠标点击的都是“活动”事件。您放在个人资料页面上的任何内容都受到很大限制,一旦您移至 Canvas 页面或 Boxes,您将拥有更多的灵活性。不幸的是,除了个人资料之外,在任何地方发布 Flair 都是没有意义的。
  • @Kevin:但是,头部/主体中的脚本块不会起到作用吗?
  • 内联和链接脚本(在正文中)被延迟,并且应用程序代码不提供配置文件上的 head 标签。与应用程序页面相比,Facebook 对待用户个人资料页面的方式非常不同;如果我在apps.facebook.com 域中的任何地方工作,我的所有javascript 都会立即运行。当然可能有一些秘密的肮脏伎俩来解决这个问题,但我不知道。
【解决方案2】:

另一个允许即时验证的解决方案是散列电子邮件地址并检查它是否与用户的 Gravatar 匹配。当然,并非每个用户都提供了电子邮件地址,但您始终可以先执行此检查,如果失败,您可以退回到“关于我”部分编辑(或仅要求用户有电子邮件地址)。这个想法不是我的,所以我让null explain

您还有可用的源吗?因为我已经找到了一个解决方案来防止其他用户弄乱你的结果。您只需对查看者使用的电子邮件地址进行哈希处理,并检查页面上的 gravatar 图片链接是否为outlined on the gravatar site。如果用户 id 和图像哈希匹配,则将更改记录到数据库,否则...仅显示结果。我可以做出改变,但来源似乎丢失了...... :(

【讨论】:

  • 此外,电子邮件也很容易判断。例如,Jon Skeet 的电子邮件可能是“skeet@pobox.com”;从他的用户资料开始,点击两次即可到达。将这与 Facebook 不提供为用户获取原始 * 电子邮件地址的机制相结合,并且用户使用此方案冒充另一个用户很容易。 *您可以使用这些奇怪的代理密钥向用户发送电子邮件,它们是应用程序/用户对,不能转换为原始电子邮件。
  • 确实如此。我想这取决于您的目标 - 如果您希望某人能够阻止其他人在 Facebook 上冒充他们的 SO 个人资料,那么用户需要做的就是使用私人和/或唯一地址。如果你想防止所有的冒充,你将不得不使用另一个系统。
  • 我绝对希望防止冒充。另外,如果用户现在想开始使用一些超级秘密地址,将他们的 gravatar 绑定电子邮件传播到互联网的四个角落会非常困难,除非我错过了 Stackoverflow 使用 gravatar 的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多