usar sesión seguro redireccionamiento que produjo porque para modo lista inicio incluido estén está estricto error configuración comprueba como cliente bloqueado blanca activar activados acceso facebook login oauth servicestack

facebook - sesión - se produjo un error en el redireccionamiento porque el uri no está incluido en la lista blanca



ServiceStack OAuth-registro en lugar de iniciar sesión (1)

En la implementación de OAuth de la plataforma de servicios, solo vi la posibilidad de iniciar sesión automáticamente, por ejemplo. cuenta de Facebook.

Pero, ¿hay abilidad para apoyar el proceso de registro con el inicio de sesión de Facebook? Lo que quería es permitir que los usuarios inicien sesión en la aplicación de Facebook y luego cargar su nombre, apellido y correo electrónico y rellenar los cuadros de texto necesarios para el registro real en mi sitio (ya que también tengo que tener la verificación del teléfono móvil, etc.) No quiero el usuario debe ser autorizado y autenticado cuando inicia sesión con Facebook. Solo el inicio de sesión de credenciales debe ser válido para el acceso completo al sitio.

Editar: encontré una solución.

En FacebookProvider.cs

public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) { if (request != null) { if (!LoginMatchesSession(session, request.UserName)) return false; } return tokens != null && session.UserName!=null && !string.IsNullOrEmpty(tokens.AccessTokenSecret); }

La captura fue la && session.UserName! = Null parte. Entonces podemos verificar si el usuario ha iniciado sesión usando credenciales, ¡esto será! = Nulo y el usuario puede usar todos los servicios. Si no, esto será == nulo y solo puede obtener información de Facebook de la sesión.


El proyecto API de SocialBootstrap muestra un ejemplo del manejo de la devolución de llamada después de una Autenticación exitosa anulando el enganche OnAuthenticated () de su sesión de usuario personalizada :

Me retiré, reescribí algunos y destaqué algunos de los bits importantes:

public class CustomUserSession : AuthUserSession { public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { base.OnAuthenticated(authService, session, tokens, authInfo); //Populate matching fields from this session into your own MyUserTable var user = session.TranslateTo<MyUserTable>(); user.Id = int.Parse(session.UserAuthId); user.GravatarImageUrl64 = CreateGravatarUrl(session.Email, 64); foreach (var authToken in session.ProviderOAuthAccess) { if (authToken.Provider == FacebookAuthProvider.Name) { user.FacebookName = authToken.DisplayName; user.FacebookFirstName = authToken.FirstName; user.FacebookLastName = authToken.LastName; user.FacebookEmail = authToken.Email; } else if (authToken.Provider == TwitterAuthProvider.Name) { user.TwitterName = authToken.DisplayName; } } //Resolve the DbFactory from the IOC and persist the user info using (var db = authService.TryResolve<IDbConnectionFactory>().Open()) { //Update (if exists) or insert populated data into ''MyUserTable'' db.Save(user); } } //Change `IsAuthorized` to only verify users authenticated with Credentials public override bool IsAuthorized(string provider) { if (provider != AuthService.CredentialsProvider) return false; return base.IsAuthorized(provider); } }

Básicamente, esta lógica personalizada definida por el usuario (que se activa después de cada autenticación exitosa) extrae los datos de UserSession y los almacena en una ''MyUserTable'' personalizada.

También hemos anulado el significado de IsAuthorized para aceptar solo usuarios que se hayan autenticado con CredentialsAuth.

Puede usar esta información para completar el resto del registro.

Otras personalizaciones posibles

La autenticación integrada de ServiceStack persiste en AuthData y rellena automáticamente la sesión. Si desea agregar aserciones de validación adicionales, simplemente puede usar su propio atributo [Autenticación] personalizado que contiene una lógica personalizada adicional. Mire la implementación del AuthenticateAttribute incorporado como una guía .