首先,我了解OpenId用于身份验证,而OAuth用于授权,与网站上的其他问题不同,我不会问哪个应该用于哪个,但是否有人可以为我的问题建议解决方案.
我想允许用户通过他们的LinkedIn/Twitter/Facebook帐户登录我的网站,一旦登录通过LinkedIn,他们也可以授权他们的Twitter和Facebook帐户作为可选的登录方法.这将允许用户通过三者中的任何一个进行身份验证,但最终会在我的站点上将其用户帐户作为最终结果.
我还想使用他们提供的授权来获取基本用户详细信息(配置文件图片/名称等)和发布状态更新.
我不想要求用户通过openId使用他们的帐户登录,然后必须通过oauth再次授权同一帐户,以允许我的网站发布到他们的服务提要,并且必须为3个服务中的每一个执行此操作.
对此问题的任何想法或问题?
如果您使用的是ASP.NET MVC,DotNetOpenAuth是支持OpenID/OAuth站点的绝佳解决方案.StackOverflow正在使用它,它们对于在站点中使用的代码非常挑剔.
OpenID与DotNetOpenAuth的集成非常简单.我没有尝试OAuth,但我不认为它的质量会降低.
不幸的是,Facebook不支持OpenID/OAuth,因此您需要使用不同的解决方案.我使用的是Clarity Consulting的Facebook Developer Toolkit.它有效,虽然我对代码的质量有一些抱怨; 不幸的是我还没有找到更好的东西.(注意:如果有人知道更好的选择,请务必告诉我)
Facebook Connect与Facebook Developer Toolkit的基本集成也相对简单.然而,由于他们试图保持与Facebook API的接近,他们的对象模型有些混乱,因此HTTP API模式正在大量涌现.不过,它还能完成这项工作.
更新:现在Facebook宣布他们将支持OAuth 2.0,DotNetOpenAuth可能会成为最佳解决方案.