首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Facebook认证使用Clearance的Rails应用程序?

Facebook认证使用Clearance的Rails应用程序?
EN

Stack Overflow用户
提问于 2011-10-06 05:41:33
回答 2查看 1.6K关注 0票数 5

我正在编写一个Rails 3.1应用程序,使用Clearance进行身份验证。我想添加标准的Facebook身份验证:允许用户直接(使用Clearance)或通过FB继续向我们注册/验证;如果他们通过FB登录/注册,并且我们已经有了相关电子邮件地址的帐户,则合并帐户。

有很好的文档可以使用OmniAuth/Devise,但我还没有找到类似的Clearance文档。有没有(积极维护的)gem可以在这里提供帮助,或者仅仅是教程?到目前为止,我发现最好的是BlueLightSpecial,但无论是它还是它用于FB Connect的gem似乎都不再积极维护了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-17 03:43:47

Devise/OmniAuth的好处是它与其他API (Twitter、Facebook等)无缝集成。

您可以尝试使用现有的gem来炮制自己的自定义集成与Clearance。例如:https://github.com/nsanta/fbgraph (尽管这个gem已经有一段时间没有维护过了)。仍然工作得很好。

还有考拉https://github.com/arsduo/koala -使用OAuth身份验证和Facebook Graph API。

票数 0
EN

Stack Overflow用户

发布于 2012-04-16 03:37:50

我最终编写了this solution -将其发布在这里,以防它可以帮助其他人(或者其他人有改进它的建议)。

下面是一些逻辑:

该应用程序最初是为身份验证/授权提供许可的,因此坚持使用许可可以让现有的名称/pwds和现有的授权码继续工作。

用户标识

Clearance使用电子邮件地址作为主要标识符。应用程序需要每个用户都有一个用于其他目的的电子邮件地址,所以我们将继续使用电子邮件作为主要用户id。当用户注册时,如果他们通过FB注册,我们从FB获取它。(请注意,omniauth-facebook请求一组可配置的FB权限;默认情况下包含对电子邮件地址的访问权限)。

用户注册

新用户可以选择创建电子邮件/密码组合,或通过FB注册。Omniauth-facebook用于针对FB进行身份验证(并允许随着时间的推移扩展到其他身份验证系统)。我们从FB获取用户数据(姓名、电子邮件等),外加一个Facebook身份验证令牌。以这种方式进行身份验证的用户不需要提供密码。选择在没有FB的情况下注册的用户提供电子邮件地址、密码和其他用户数据。由FB登录创建的用户被带到user/edit,以完成提供我们无法从FB获取的任何配置文件详细信息。我们还保留了现有的用户注册机制,允许用户手动提供电子邮件/密码/其他详细信息。

用户验证

清除验证用户的电子邮件地址。我们被覆盖的password_optional?函数本质上绕过了他们的密码验证。对于生产用途,此解决方案应包括用户验证,以实现“您必须拥有有效的pwd或有效的omniauth证书中的至少一个”

会话创建

使用Clearance的会话模型(将remember_token存储在cookie中)。

重写会话控制器以添加用于通过FB进行签名的方法。从FB回调路由到此方法,该方法创建/更新用户的身份验证数据并调用Clearance的sign_in(user)

Authorization

Clearance的简单模型被保留下来:“authorize”过滤器本质上只是检查一个有效的用户是否已经登录,并提供了一个current_user助手。

FB usage

用户的FB令牌在FB身份验证之后存储(在belongs_to用户的身份验证对象中)。Koala用于其他FB请求(例如,发布到用户的墙上)这里省略了...details;我没有做任何特殊的事情。

FB令牌刷新

FB令牌定期过期(并且FB的“离线访问”角色已被弃用)。令牌在用户登录时刷新,但令牌可能在应用程序会话到期前失效(当用户注销FB、更改其FB密码或令牌过期时)。我正在研究如何在登录流程之外定期更新FB令牌,但这似乎超出了这个答案的范围。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7668093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档