首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图通过javascript和全方位facebook验证facebook时出现的OAuth错误

问试图通过javascript和全方位facebook验证facebook时出现的OAuth错误
EN

Stack Overflow用户
提问于 2012-07-12 01:23:27
回答 1查看 1.6K关注 0票数 4

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

服务器端的auth工作得很棒--没有问题--但是通过JS弹出窗口尝试它会给我带来这个错误:

​

​

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

代码语言:javascript
复制
(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError

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

代码语言:javascript
复制
window.location = '/auth/facebook/callback' if response.authResponse

但我对Omniauth是如何工作的还不太清楚。有人能帮我吗?让我知道,如果你需要我发布特定的文件,尽管一切都应该逐字逐句的瑞安已经在他的屏幕上提到。

UPDATE:所以我刚刚找到了JS,看起来JS调用是正确的,所以我很困惑。:(

另一个更新:使用浏览器控制台,我似乎可以很好地操作自己的状态。调用FB.login()会提示我使用一个窗口,我可以填写该窗口,它会将我记录在案。正在运行

代码语言:javascript
复制
FB.getLoginStatus(function(resp) { console.log(resp.status); });

..。确认我与有效的凭据有关。所以现在我真的很困惑为什么这不管用..。

作为参考,以下是加载到页面上的JS:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-12 12:53:26

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

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

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

https://stackoverflow.com/questions/11443858

复制
相关文章

相似问题

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