1

我正在使用 Rails 3.0.9。试图通过 Facebook 登录到我的(本地主机)网站。

我在登录页面上的初始化参数:

FB.init({
      appId : '<%= FB_APP_ID %>',
      status : true,
      cookie : true,
      xfbml : true
});

登录按钮有效,我得到 Facebook 登录弹出窗口,我可以成功登录 Facebook。然后达到以下事件:

FB.Event.subscribe('auth.sessionChange', function(response) {
    if (response.session) {location.href= ...}

我被重定向到想要的位置。但是 - 无法获得任何“fbs_”或“fbsr_”的 cookie,就像 Oauth 正在寻找的那样:get_user_info_from_cookie(cookies)

我的 cookie = {},什么都没有。有几次,我记得我确实在那里有一些 facebook cookie,我无法重建这种情况,但无论如何,它不包括“fbs_”,只有其他的。

此外,登录后,当我返回浏览器上的 Facebook 选项卡并刷新时,它确实显示了我的 Facebook 页面,但一秒钟后,它显示一个弹出窗口,上面写着“你需要登录”。但在我的应用程序中,它仍然知道继续将我引导到想要的 href,就像用户登录时需要的那样。

如果你有什么可以帮助我的,我真的很想听听...... :-)

谢谢,穆兹利。

  • 刚刚又得到了一些 Facebook cookie 的场景(仍然不是想要的名字)。得到以下名称:“datr”、“locale”、“locale”、“reg_fb_gate”、“lu”。但即使是这些,我也无法使用 Rails cookie 参数 - cookies["dart"] 返回 null。cookies 参数仅显示具有 localhost 主机的 cookie(其中包含我登录时的数据(有许可)- 到站点的常规登录过程。
4

2 回答 2

1

只是想更新说我已经解决了我的问题:

  1. 我在 init 中添加了 param: oauth : true

    FB.init({
        appId : '<%= FB_APP_ID %>',
        status : true,
        cookie : true,
        xfbml : true,
        oauth : true
    });
    
  2. 显然,添加在 js.src 中添加的参数有一个错误,所以我删除了它们(!)并且问题解决了:

    (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {return;}
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/all.js" //removed: #xfbml=1&appId=<%= FB_APP_ID %>";
        fjs.parentNode.insertBefore(js, fjs);
    }
    (document, 'script', 'facebook-jssdk')); 
    

这为我解决了饼干问题!

于 2011-11-06T22:07:49.403 回答
0

如果您想使用 localhost 进行 facebook 开发,请将“127.0.0.1 localhost.local”记录添加到您的 /etc/hosts 文件中,在 developers.facebook.com 的应用程序设置中更改域并将浏览器指向此 url - 它可以完美运行

于 2013-12-04T22:58:39.340 回答