ruby-on-rails – Rails omniauth-facebook未解决的问题

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails omniauth-facebook未解决的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前的omniauth-facebook似乎有一些问题,我想知道有没有人有答案.

第一个问题是无效的凭据问题.由于这个问题,我无法使用客户端授权登录我的应用程序.然而,这可以通过将facebook-omniauth降级到1.4.0版本来解决. (reference)

但是,现在我遇到第二个问题,NoAuthorizationCodeError,带有错误信息:

OmniAuth Strategies Facebook NoAuthorizationCodeError 
(must pass either a `code` parameter or a signed request 
(via `signed_request` parameter):

这是在here问了,但接受的答案建议实际升级到1.4.1版本,这将使以前的无效凭据问题再次发生.所以这不是我的选择.

当我尝试通过互联网浏览器登录我的应用程序在Facebook iFrame(从应用程序中心搜索我的应用程序)时,NoAuthorizationCodeError发生.一切都可以在chrome或firefox上正常工作.还有一个github issue准确地指出了这个问题,但没有人提出一个答案.我也试图降级到omniauth-facebook 1.3.0版本,但没有任何区别.我也试图传入signed_request参数,如下所示:

window.location = '/auth/facebook/callback',{ signed_request: response.authResponse.signedRequest }

然而,它没有任何区别(在IE上,错误仍然存​​在),我不知道这是否是正确的方式传递代码作为参数(如何检查?)

我认为我的设置没有问题.我真的很感谢任何关于这件事情的帮助.

更新:

升级到1.4.1版本而没有无效的凭据问题,但是当我通过Internet Explorer访问Facebook中的应用程序时,NoAuthorizationCodeError仍然发生.检查我的Github issue.

更新:

我降级到1.4.0版本,并添加了signedRequest参数.

<script>
function login() {
  FB.login(function(response) {
    if (response.authResponse) {
      window.location = '/auth/facebook/callback?' + $.param({ signed_request: response.authResponse.signedRequest })
    } 
  },{scope: 'email,publish_stream,publish_actions'});
}
</script>

日志中没有错误或警报,并且一切正常工作.
但是,如果我通过互联网浏览器在Facebook iFrame中登录,即使在回调阶段启动后也不会登录我.我猜原来的问题已经解决了,但是当没有任何类型的错误信息时,我不知道如何调试这个问题.

问题:当我点击“使用Facebook登录”在我的应用程序的IE iFrame Internet Explorer,我没有登录时,授权过程完成.这个问题只发生在那个具体的环境中,我很难想出原因.

2013-02-22T01:10:40+00:00 app[web.1]: Started GET "/auth/facebook/callback?signed_request=LONGSTRING" for 200.1.102.103 at 2013-02-22 01:10:40 +0000
2013-02-22T01:10:40+00:00 app[web.1]: (facebook) Callback phase initiated.
2013-02-22T01:10:40+00:00 app[web.1]: Processing by SessionsController#create_facebook as HTML
2013-02-22T01:10:40+00:00 app[web.1]:   Parameters: {"signed_request"=>"LONGSTRING","provider"=>"facebook"}
2013-02-22T01:10:40+00:00 app[web.1]:   User Load (1.6ms)  SELECT "users".* FROM "users" WHERE "users"."provider" = 'facebook' AND "users"."uid" = 'MYUID' LIMIT 1
2013-02-22T01:10:40+00:00 app[web.1]:    (0.8ms)  BEGIN
2013-02-22T01:10:40+00:00 app[web.1]:   User Exists (1.0ms)  SELECT 1 AS one FROM "users" WHERE ("users"."name" = 'MYNAME' AND "users"."id" != 3) LIMIT 1
2013-02-22T01:10:40+00:00 app[web.1]:    (0.9ms)  COMMIT
2013-02-22T01:10:40+00:00 app[web.1]: Redirected to http://MYAPP.COM
2013-02-22T01:10:40+00:00 app[web.1]: Completed 302 Found in 10ms (ActiveRecord: 4.2ms)

再次,在任何其他环境中,授权在所有浏览器中都能完美地工作.只有当我尝试通过Internet Explorer在Facebook中登录时才会出现此问题.

我的环境:omniauth-facebook 1.4.0,omniauth 1.1.1,oauth2 0.8.0,Rails 3.2.11

由于最新版本中的无效凭据错误,我故意将omniauth-facebook从1.4.1降级到1.4.0.

解决方法

使用omniauth(1.1.3),oauth2(0.8.1)和omniauth-facebook(1.4.1).

你不会得到这些的任何错误

猜你在找的Ruby相关文章