Сделайте Facebook ЕДИНСТВЕННЫМ / логин по умолчанию для приложения devise canvas
Я делаю приложение на холсте Facebook, размещенное на heroku. Для аутентификации я использую гем devise с гемом omniauth-facebook.
В настоящее время, когда приложение открыто, оно просит вас "Войти", используя свой адрес электронной почты и пароль, или нажать кнопку "Войти через Facebook".
Я хочу пропустить эту страницу, и когда пользователь загружает приложение, оно должно автоматически их аутентифицировать.
Как я могу это сделать?
1 ответ
Если ваше приложение facebook запрашивает разрешения у пользователя, и они авторизовали его, параметр signature_request, который передается в ваше приложение rails, должен содержать необходимую информацию. Поэтому вы можете декодировать параметр и извлечь идентификатор пользователя Facebook из самого хэша.
Попробуйте что-то вроде этого:
class ApplicationController
before_filter :inspect_signed_request
protected
def base64_url_decode(input)
input += ('=' * (4 - input.length % 4) % 4)
Base64.decode64(input.tr('-_', '+/'))
end
def inspect_signed_request
encoded_sig, payload = params[:signed_request].split('.', 2)
# decode the data
sig = base64_url_decode(encoded_sig)
data = JSON.parse(self.class.base64_url_decode(payload))
raise data.inspect
end
end
Это в основном вызовет исключение, показывая вам детали подписанного запроса. По сути, вы можете просто разобрать его и проверить значение идентификатора FB для подписанного запроса. Если его там нет, вы можете добавить код, чтобы перенаправить их в форму входа.