The action 'failure' could not be found for Users::OmniauthCallbacksController
-
check_circle_outlineMódulo 1 | 24 clases
Introducción
expand_more-
done_all
Clase 1
Presentación del curso
-
done_all
Clase 2
2.- Cómo funciona la web
-
done_all
Clase 3
3.- Entendiendo lenguajes de servidor
-
done_all
Clase 4
4.- Http explicado
-
done_all
Clase 5
5.- Por qué Ruby on Rails
-
done_all
Clase 6
6.- Novedades en Rails 5
-
done_all
Clase 7
7.- Instalar Ruby on Rails 5
-
done_all
Clase 8
8.- Ruby on Rails 5 en web para usuarios de Windows
-
done_all
Clase 9
9.- Como procesa Rails peticiones
-
done_all
Clase 10
10.- Crear Proyecto
-
done_all
Clase 11
11.- Autenticación y sesiones
-
done_all
Clase 12
12.- Devise
-
done_all
Clase 13
Autenticación con Facebook parte 1
-
done_all
Clase 14
14.- Autenticación con Facebook parte 2
-
done_all
Clase 15
15.- Manejando errores autenticación
-
done_all
Clase 16
16.- Parámetros fuertes (Strong params)
-
done_all
Clase 17
17.- Actualizar datos antes del registro
-
done_all
Clase 18
18.- Usuarios prueba y failure
-
done_all
Clase 19
19.- Asset Pipeline
-
done_all
Clase 20
20.- Rutas para autenticados y no autenticados
-
done_all
Clase 21
21.- Ciclos e Interpolación en SASS
-
done_all
Clase 22
22.- Parciales y helpers
-
done_all
Clase 23
23.- Múltiples layouts con herencia
-
done_all
Clase 24
24.- Navegación
-
-
check_circle_outlineMódulo 2 | 8 clases
Validaciones y pruebas
expand_more -
check_circle_outlineMódulo 3 | 12 clases
Controladores a fondo
expand_more -
check_circle_outlineMódulo 4 | 13 clases
Subir archivos
expand_more -
check_circle_outlineMódulo 5 | 12 clases
Solicitud de amistad
expand_more -
check_circle_outlineMódulo 6 | 7 clases
Feed de publicaciones
expand_more -
check_circle_outlineMódulo 7 | 11 clases
Notificaciones
expand_more
11 comentario(s)
The action 'failure' could not be found for Users::OmniauthCallbacksController
SyntaxError in Users::OmniauthCallbacksController#facebook /Users/matiascarpintini/social-network/app/views/users/omniauth_callbacks/edit.haml:16: syntax error, unexpected keyword_ensure, expecting keyword_end Util.html_safe(_erbout);ensure;@haml_buffer = @haml_buffer.u ^ Extracted source (around line #16): 14 15 | %div =submit_tag "Send" Rails.root: /Users/matiascarpintini/social-network Application Trace | Framework Trace | Full Traceapp/views/users/omniauth_callbacks/edit.haml:16: syntax error, unexpected keyword_ensure, expecting keyword_end app/controllers/users/omniauth_callbacks_controller.rb:13:in `facebook'
Solución:
Agregar ".symbolize_keys" a la session al momento de enviarla al modelo. Quedaría de la siguiente manera.
def custom_sign_up user = User.from_omniauth(session["devise.auth"].symbolize_keys)
sign_in_and_redirect @user, event: :authentication
else
render :edit
end
end
El problema es que el hash de omniauth no viene igual que el hash de session["devise.auth"], de tal manera que en el hash del session no se podia leer los datos de uid ni provider de la siguiente manera auth[:provider]. La solución es cambiarlo a la siguiente manera auth["provider"]
def self.from_omniauth(auth)
where(provider: auth["provider"], uid:auth["uid"]).first_or_create do |user|
if auth[:info]
#user.email = auth[:info][:email]
user.name = auth[:info][:name]
end
user.password = Devise.friendly_token[0,20]
end
end
Hola puedes ver el contenido de esta manera "<%= session[:nombre]%>" en el caso de haml "=session[:nombre]" hay una manera tambien de ver el id con el que se relaciona el navegador y el servidor pero ahora mismo no me acuerdo como. Saludos
Recuerden que por un lado tienen que guardar la información que envió omniauth en una sesión: (esto en omniauth_callbacks_controller#facebook)
session["devise.auth"] = request.env["omniauth.auth"]
En custom_sign_up tienen que recuperar dichos datos:
User.from_omniauth(session["devise.auth"])
Y debería obtener el uid y el provider.
Pueden comparar su código con el mío, aquí: https://github.com/codigofacilito/backend-2016/blob/master/app/controllers/users/omniauth_callbacks_controller.rb
Sigo los pasos tal cual, pero al momento de registrarse con Facebook, sin tener que completar datos (con custom sign up) guarda en la db los campos de uid y provider. El problema es cuando se tienen que actualizar los datos antes del registro, se guarda todos los campos nuevos menos uid y provider, lo cuál hace que cada vez que inicia sesión pase por custom sign up
:/ ayuda
Buenas amigos! jajaja, mi problema es todo lo contrario al problema de javier, siempre me redirecciona a la pagina donde agrego los datos adicionales, aunque ya los hubiese llenado
Clase 17