javascript - 尝试通过 javascript 和 omniauth-facebook 对 facebook 进行身份验证时出现 OAuth 错误

标签 javascript facebook ruby-on-rails-3 omniauth

尝试通过 Railscast 实现 Ryan 的 Facebook 登录 JS 实现:http://railscasts.com/episodes/360-facebook-authentication

服务器端身份验证非常有效——没有问题——但是通过 JS 弹出窗口尝试它总是给我这个错误:

enter image description here

另外,我的服务器输出记录:

(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError

我的直觉告诉我,原因是没有数据被传递到回调 URL(来自 ASCIIcast 底部的 Ryan 的 JS 代码):

window.location = '/auth/facebook/callback' if response.authResponse

但我对 Omniauth 的工作原理知之甚少,无法确定。谁能帮我这个?如果您需要我发布特定文件,请告诉我,尽管一切都应该是 Ryan 在他的截屏视频中已经提到的逐字记录。


更新:所以我刚找到 this post看起来 JS 调用正确,所以我很困惑。 :(


另一个更新:我似乎可以使用浏览器控制台很好地操纵我的状态。打电话FB.login()用一个窗口提示我,我可以填写它,然后它让我登录。正在运行

FB.getLoginStatus(function(resp) { console.log(resp.status); });

... 确认我已使用有效凭据连接。所以现在我真的很困惑为什么这不起作用......

作为引用,这是我加载到页面上的 JS:

jQuery ->
  $('body').prepend '<div id="fb-root"></div>'

  $.ajax
    url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js"
    dataType: 'script'
    cache: true

window.fbAsyncInit = ->
  FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true)

  $('*[data-js="fb_login"]').click (e) ->
    e.preventDefault()
    FB.login (response) ->
      window.location = '/auth/facebook/callback' if response.authResponse

  $('*[data-js="logout"]').click ->
    FB.getLoginStatus (response) ->
      FB.logout() if response.authResponse
      true

是的,我已经确认 <%= ENV["FACEBOOK_APP_ID"] %>正在返回我正确的 Facebook 应用程序 ID。

最佳答案

在“标准”端口 80/443 以外的任何其他端口上使用 JS SDK 存在一些问题。

尝试设置您的本地测试机器,使其使用这些端口之一(80 用于 HTTP,443 用于 HTTPS),看看问题是否仍然存在。

关于javascript - 尝试通过 javascript 和 omniauth-facebook 对 facebook 进行身份验证时出现 OAuth 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11443858/

相关文章:

javascript - 如何从 DaterangePicker 获取日期值?

javascript - react 。如何用以前的状态更新状态?

iphone - 带有 iPhone SDK 的 Facebook Graph API

ruby-on-rails - 使用 Rails Ajax 渲染不同的 .js 文件

javascript - 加速 Nivo-Slider

javascript - 这种抽象的重复是如何运作的?

facebook - 有没有办法获得所有可用的 action_types?

php - 使用 Facebook 帐户登录

ruby-on-rails - Ruby rails - 从数据库中只选择几列

ruby-on-rails-3 - 如何在Rails 3中设置印度时区