Rails 被豆瓣的 omniauth 的 gem 搞吐了

windxj · 2013年04月11日 · 最后由 kevinhua 回复于 2013年04月11日 · 3938 次阅读

我按照 railscasts 的方法,通过 devise 里添加 ominiauth :douban...各种正常配置,接着 route、controller 也写好了,于是点击豆瓣登陆,然后授权,接着返回的直接是一个 code,少了通过 code 申请 access_token 这一步。

接着看 log,发现报错,所谓的 authentication_failure,但是返回了 code~这是什么情况,于是我去看了 douban 的 oauth2 的 api,发现不知道是不是 gem 里少了获取 access_token 这一步骤!!!太假了。

于是我就想着自己写了。。。,接着我将获得的 code,放到数据库里,然后调用表单按照 API 的 url 将 code 填写后 POST。接着返回了 access_token~这玩意搞了我一晚上。。。

我是 rails 新手,学生,第一次弄 omniauth,写得很乱,不知道大神们看懂了吗?我想问这个缺少获取 access_token 这一步是什么原因?

https://github.com/liluo/omniauth-douban-oauth2 这个 gem,你可能用的是 oauth 那个 douban 老的 gem

#1 楼 @quakewang 我用的就是这个 gem...,不知道是不是自己的问题

我们网站就用的这个 gem,没有遇到什么问题,是你 devise 或者 omniauth 哪里配置不正确吧?

#3 楼 @quakewang 嗯嗯,有可能,蛋疼了,刚弄的时候遇到了各种问题,一开始一个很少遇到的 callbacks 的问题,后来我是本地测试又有 SSL 的问题,然后最后是这问题,纠结了,我自己去看看,实在不行试着自己写写 GEM

作者@liluo 也是在这个社区的。

用 sinatra 写又可以。。。晕了~

#5 楼 @metal #3 楼 @quakewang 谢谢大家的回答,我解决了~松了一口气~

#3 楼 @quakewang 你们的处理办法比较粗暴,没有实现同时 linked 到多个 services,如果绑定 2 个以上 services,直接显示“……已经绑定”之类的提示,而不是友好地处理绑定多个 services。

#8 楼 @kevinhua 我们是支持一个用户同时绑定到多个服务的,比如你先用微博注册,接下去还能同时绑定 QQ 和豆瓣。

你说的这个提示是这样一个情况:用户先用一个服务注册了(比如 QQ),再登出了当前用户,然后又用豆瓣注册一个新用户,接下去他如果想在这个新用户上绑定之前已经注册过的 QQ,那么就会提示出错。

#9 楼 @quakewang 可能是以前绑定过,忘了。谢谢回答。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号