Tengo unas pocas preguntas acerca de la nueva reautorización FBSession (reauthorizeWithPermissions: comportamiento: completionHandler :) en Facebook SDK 3.0:Facebook SDK de iOS 3.0 Re-Autorización
Una vez que alguien ha accedido a través de facebook en mi aplicación, en ciertas páginas Me gustaría volver a autenticar al usuario con sus credenciales de Facebook. Esto es para garantizar que la persona que está viendo la página y la persona que inició sesión registraron, son iguales. Los permisos para re-auth siguen siendo los mismos que para iniciar sesión. Todo lo que necesito es una nueva confirmación de la contraseña del usuario para garantizar este caso.
Por lo tanto, estoy usando la reautorización con Permissions: para hacer esto. Y estoy configurando el comportamiento como FBSessionLoginBehaviorForcingWebView para garantizar que el usuario se vea obligado a ingresar sus credenciales. Sin embargo, esto no funciona en absoluto. Simplemente aparece una vista web en blanco durante un par de segundos y luego desaparece ... En este punto, llama al bloque FBSesstionStateHandler con el estado establecido en FBSessionStateOpen; sin embargo, no puede llamar al FBSessionReauthorizeResultHandler definido en (completionHandler :).
Sin embargo, si simplemente establezco el comportamiento predeterminado (FBSessionLoginBehaviorWithFallbackToWebView) funciona bien al pasar la solicitud de ida y vuelta entre la aplicación de Facebook/safari y completa la llamada al ejecutar el comando completion correctamente. Sin embargo, con el comportamiento predeterminado no obliga al usuario a volver a ingresar su contraseña.
Así que estoy muy confundido, y los documentos SDK en la web no son muy útiles para mi caso. ¿Podría alguien por favor avisarme sobre lo que estoy haciendo mal ... o si el clima es un error conocido en el SDK? Si es así, ¿cómo puedo cumplir con mis requisitos?
-(void) reauthThroughFacebook {
if (!self.facebookSession.isOpen && self.facebookSession.state == FBSessionStateCreatedTokenLoaded) {
[self.facebookSession openWithBehavior: FBSessionLoginBehaviorWithNoFallbackToWebView
completionHandler: self.stateHandler];
}
if (self.facebookSession.isOpen) {
[self.facebookSession reauthorizeWithPermissions: self.userPermissions
behavior: FBSessionLoginBehaviorForcingWebView
completionHandler:^(FBSession *session, NSError* error){
if (self.facebookSession == session) {
[self completedReauthWithSuccess:(error == nil) error:error];
}
}];
} else {
[self completedReauthWithSuccess:NO error:[NSError errorWithDomain: @"No active session found."
code: FBErrorInvalid userInfo: nil]];
}
}
Además, una vez que la vista web reauth aparece correctamente, ¿Cómo me aseguro de que el correo electrónico del usuario es rellena automáticamente y bloquear el formulario de usuario cambiarlo? ¿Puedo acceder a la vista web dentro de facebook sdk para establecer estas propiedades?
Finalmente, ¿qué ocurre con el token de acceso y la fecha de caducidad si la re-auth se lleva a cabo con los mismos permisos que el inicio de sesión?
Gracias de antemano,
Me pregunto lo mismo; parece que en sdk 3.1 el método reauthorizeWithPermissions: behavior: completionHandler: también está en desuso. estoy – Kevlar