omniauth 1.0 这个月初才刚发布,我搭配测试 omniauth-facebook, omniauth-twitter, omniauth-weibo 都很顺利,本来以为再补上 omniauth-identity 就可以把 devise 扔了,
但实测结果,register 后传回来的 auth hash 里面都看不到任何 'password' or 'password_digest', 感觉似乎是 bug.
你可以有个类继承 OmniAuth::Identity::Models::ActiveRecord,然后 request_phrase 时候会做 save,这时候 password_digest 就被存起来了
基于 omniauth-identity 用你自己的 Model 去保存这些数据。
https://github.com/intridea/omniauth-identity/blob/master/lib/omniauth/strategies/identity.rb
#1 楼 @sishen 我就去倒了杯水,1 楼就被你抢了
#1 楼 @sishen 话说你要这个名字我还很不习惯,干嘛不用 yedingding 呢?
github 里面是 sishen 啊,然后 github 登陆后就没改过用户名
omniauth-weibo 已经可用了?
@suupic 我是抓这份 https://github.com/ballantyne/omniauth-weibo , 我只有简单测,初步验证可用。
@raecoo, @yedingding 感谢你们的解答,我才发现 omniauth-identity 其实一直自动把使用者注册帐号写到另一个 model( 终于了解为什么文件上就说要先开个 model 叫做 Identity)... 一开始我直觉无法离解,因为这跟其他 strategy 的回报途径完全不一样 (其他 strategy 只会透过 callback request 把 auth hash 变数传到你的程式,并不会自动写 model).
后来想想这是对的,omniauth-identity 的哲学是把原本最单纯的 id /password 认证也模拟成第三方认证,Identity 那个 model 我们要把它想像成像是第三方外部机构,不应该期待 callback 里面会给 password_digest
identity 也可以发成你自己想要的 Model,比如说 User, 这样的话就直接与现有’用户‘自然合成。大大增加了易用性。