Не удается получить файлы cookie Oauth facebook, используя Koala для подключения к Facebook (с Rails)

#ruby-on-rails #facebook #cookies #oauth #koala

#ruby-on-rails #Facebook #файлы cookie #oauth #koala

Вопрос:

Я использую Rails 3.0.9. Пытаюсь войти на свой сайт (localhost) через Facebook.

Мои параметры инициализации на странице входа:

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

Кнопка входа в систему работает, я получаю всплывающее окно Facebook login и могу успешно войти в Facebook.
Затем достигается следующее событие:

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

И меня перенаправляют в нужное место.
Но — не удается получить файлы cookie типа «fbs_» или «fbsr_», которые ищет Oauth по адресу: get_user_info_from_cookie (cookies)

Мои файлы cookie = {}, там ничего нет. В нескольких случаях, я помню, у меня там были некоторые facebook cookies, я не могу восстановить такой случай, но в любом случае, он не включал «fbs_», только другие.

Кроме того, после входа в систему, когда я возвращаюсь на вкладку Facebook в браузере и обновляю, она показывает мне мою страницу Facebook, но через секунду появляется всплывающее окно с надписью «вам нужно войти». Однако в моем приложении он по-прежнему знает, что нужно продолжать направлять меня к нужному href, как это необходимо при входе пользователя в систему.

Мне бы очень хотелось услышать, есть ли у вас что-нибудь, что может мне помочь … 🙂

Спасибо, Moozly.

  • Только что снова получил сценарий с некоторыми файлами Facebook cookie (по-прежнему не по нужным именам). Получены следующие имена: «datr», «locale», «locale», «reg_fb_gate», «lu». Но даже к ним я не могу добраться с помощью параметра Rails cookies — cookies [«dart»] возвращает null. параметр cookies показывает файлы cookie только с хостом localhost (который содержит данные при входе в систему (с разрешением) — обычная процедура входа на сайт.

Ответ №1:

Просто хотел обновить, чтобы сказать, что я решил свою проблему:

  1. Я добавил в инициализацию параметр: 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=1amp;appId=<%= FB_APP_ID %>";
        fjs.parentNode.insertBefore(js, fjs);
    }
    (document, 'script', 'facebook-jssdk')); 
      

Это решило проблему с файлами cookie для меня!

Ответ №2:

если вы хотите использовать localhost для разработки facebook, добавьте запись «127.0.0.1 localhost.local» в свой файл / etc / hosts, измените домен в настройках приложения в developers.facebook.com и укажите браузеру на этот URL-адрес — он работает безупречно