oauth - omniauth rails 5
Usando OAuth en el cliente de ServiceStack (1)
Me estoy confundiendo al tratar de usar OAuth (facebook / twitter) en un cliente y luego autenticarme con ServiceStack. todos los ejemplos que veo para autenticar en un cliente usan autenticación básica como esta:
var response = _client.Send<AuthResponse>(new Auth
{
provider = CredentialsAuthProvider.Name,
UserName = model.Username,
Password = model.Password,
RememberMe = true
});
¿Qué tendría que hacer para autenticar a mi cliente independiente con Facebook? hago una llamada a FB y obtengo un UID, un token de acceso, un correo electrónico, etc. ¿Entonces cómo se llama a la pila de servicios para autenticarse?
Actualmente mi pensamiento es hacer la autenticación con FB en el cliente, llamar al servicio para verificar si el usuario existe (mirando la dirección de correo electrónico). si no se registran e inician sesión usando un hash de algunos de sus datos como contraseña. si existen, regístrelos de la misma manera. ¿Es esta práctica razonable / mejor?
gracias por adelantado
¿Qué tendría que hacer para autenticar a mi cliente independiente con Facebook? entonces, ¿cómo se llama a la pila de servicios para autenticarse?
Puede gestionar la autenticación en ServiceStack y Facebook utilizando FacebookAuthProvider ( https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization ). Al enviar la solicitud ** a ''/ auth / facebook'' (extremo proporcionado por ServiceStack) se autenticará contra ServiceStack y Facebook. Dentro de ServiceStack puede acceder a los ''tokens'' de Facebook usando UserSession.GetOAuthTokens("facebook")
. Creo que puede compartir esos tokens con su cliente o hacer que su cliente vaya a través de los extremos de ServiceStack (que usted crea) para acceder a Facebook. Similar a la forma en que TwitterGateway ( https://github.com/ServiceStack/SocialBootstrapApi/blob/master/src/SocialBootstrapApi/Logic/TwitterGateway.cs ) funciona en el ejemplo de SocialBootStrapApi.
** {"UserName":"yourname", "Password":"yourpassword", "RememberMe":true/false}