#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:
Просто хотел обновить, чтобы сказать, что я решил свою проблему:
-
Я добавил в инициализацию параметр:
oauth : true
:FB.init({ appId : '<%= FB_APP_ID %>', status : true, cookie : true, xfbml : true, oauth : true });
-
По-видимому, есть ошибка с добавлением параметров, добавленных в
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-адрес — он работает безупречно