使用omniauth-facebook“无效凭据”进行设计
Posted
技术标签:
【中文标题】使用omniauth-facebook“无效凭据”进行设计【英文标题】:Devise with omniauth-facebook "Invalid Credentials" 【发布时间】:2011-12-09 12:11:46 【问题描述】:我正在尝试通过 omniauth-facebook 与 Devise 一起使用 Facebook 身份验证,我已按照此处的说明进行操作:https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview
当我使用 Facebook 链接登录时,我被重定向到 Facebook 以登录并接受请求的权限。
然后我被带回 /users/sign_in 并显示错误消息“无法从 Facebook 授权您,因为“凭据无效””
查看服务器日志,重定向来自“/users/auth/facebook/callback?code=[long text string]”,正在使用 Users::OmniauthCallbacksController#failure 而不是 Users::OmniauthCallbacksController#facebook 处理如果它奏效了,我会预料到的。
任何关于为什么会发生这种情况以及如何解决它的建议都非常感谢。
【问题讨论】:
面临同样的问题,只有 部分 的用户得到了错误。 我在更新omniauth 后遇到了同样的问题,但仅限于非隐身模式下的chrome。我自己的 facebook 用户在我的日常 chrome 中被拒绝,即使我试图清除它的 cookie 等。Safari、FF 和 chrome-incognito 工作正常。 (我还没发布,不知道其他用户有没有这个问题) 【参考方案1】:好的,我遇到了同样的问题。我的原因原来是我在 config/initializers/devise.rb 中定义了这一行:
config.omniauth :facebook ...
应用 ID 和应用密码是为我的测试 Facebook 应用和生产应用定义的。修复那些 id:s 现在解决了问题。
【讨论】:
你是如何修复这些 id 的?【参考方案2】:facebook 将协议从 oauth 更改为 oauth2 凭据(id、token、name..)现在打包到一个哈希中的主要区别。你应该解析。
【讨论】:
根据omniauth-facebook github页面,支持oauth2以上是关于使用omniauth-facebook“无效凭据”进行设计的主要内容,如果未能解决你的问题,请参考以下文章