Я боролся с этим в течение 2-х дней теперь:OmniAuth-facebook аутентификация всплывающего окна не возвращает omniauth.auth
У меня есть OmniAuth-Factbook реализован правильно с Завещанием. Теперь я хочу улучшить его, сделав проверку подлинности Facebook в всплывающем окне, а не на facebook.com. Я последовал Ryan's RailsCast и добавить display => 'popup'
в моей конфигурацию поставщика в omniauth.rb
Я успешно загрузить войти в Facebook и получил возвращенный хэш request.authRequest, который содержит информацию о USERID.
Однако, когда я вернулся к обратному пути (/ auth/facebook/callback), я не получил: provider и: uid from request.evn [omniauth.auth], как раньше.
Почему omniauth hash не был создан, даже когда API Facebook вернул хэш-аутентификацию? Что я могу сделать, чтобы исправить эту проблему?
Моего контроллер для обработки facebook обратного вызова прост:
class ServicesController < ApplicationController
def create
auth = request.env["omniauth.auth"]
debugger
Права на отладчике, когда я использую IRB, чтобы проверить, нет OmniAuth хэша в request.env.
Кстати, я думаю, что я перевернул печенье в моем CoffeeScript файле:
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: '<%= "myAppID" %>', cookie: true)
$('#facebook_signin').click (e) ->
e.preventDefault()
FB.login (response) ->
window.location = '/auth/facebook/callback' if response.authResponse
$('#facebook_signout').click (e) ->
FB.getLoginStatus (response) ->
FB.logout() if response.authResponse
true
Спасибо.
Обновление: мой omniauth.rb выглядит следующим образом:
Rails.application.config.middleware.use OmniAuth::Builder do
# The following is for facebook
provider :linkedin, '3yn', 'iMJ'
provider :twitter, 'SQ', 'T5fo'
provider :facebook, '081', 'e80',
scope: "email"
end
У вас есть его как '/ app/assets/javascripts/services.js.coffee.erb'? Я пытаюсь убедиться, что понимаю '' <% = "myAppID"%> ''.Кажется, что слишком много наборов кавычек. –
Привет, Остин? Я не уверен, что понимаю ваш вопрос, но у меня есть файл под названием facebook.js.coffee.erb, содержащий код coffeescript, упомянутый в моем вопросе. Там есть фактический идентификатор вместо myAppID, например '<%="12345" %> ''. Первая кавычка предназначена для инъекции элемента html, а вторая - для обертывания текстовой строки. – AdamNYC
Если у вас это жестко закодировано, зачем вам это нужно в блоке ERB? –