2011-06-02 6 views
9

estoy usando API fbconnect en mi project.When la ventana de acceso se abre cuando entramos en nuestras credenciales, al hacer clic en el botón de inicio de sesión no se realiza algo y se redirige a la publicación página. Mi problema es que no obtengo la acción que se realiza en ese botón de inicio de sesión para poder poner un indicador allí.botón de acción en la entrada del botón clic en API FBConnect

He adjuntado una captura de pantalla para especificar qué botón que estoy hablando. enter image description here

Cualquier sugerencia será apreciada altamente!

Respuesta

4

¿Quieres robar las contraseñas de Facebook de otros? :)

Parece, FBConnect utiliza UIWebView para cargar las páginas de Internet. Esos elementos de formulario no se crean a partir del código. Entonces no puedes tener acceso a esos métodos/acciones.


El seguimiento de la botón de acceso acción utilizando UIWebViewDelegate:

En webView:shouldStartLoadWithRequest:navigationType: método delegado en FBDialog.m, se puede ver la solicitud que se envía desde el punto de vista de inicio de sesión.

Puede leer el URL utilizando [request.URL absoluteString]. Comprobar si eso URL contiene la cadena https://www.facebook.com/login.php?m=m. Si es , entonces probablemente se esté enviando una solicitud de inicio de sesión. Puedes hacer tu acción allí.

Nota: No estoy seguro de que esto siempre va a funcionar. Puede hacer más investigaciones para encontrar una mejor solución.

+1

Aquí es diálogo estándar de Facebook que aparece cuando el dispositivo no se admite multitarea. – SVGreg

+0

@SVGreg, ¿Dónde? – EmptyStack

+0

@Simon no es mi requisito, cuando hago clic en este botón, el indicador de actividad se abre hasta que se abre un nuevo cuadro de diálogo. – Gypsa

1

cuando se presiona el botón de inicio de sesión - la solicitud de inicio de sesión enviará al servidor FB solamente. Para obtener respuesta que necesita para implementar el protocolo FBSessionDelegate:

/** 
* Called when the user successfully logged in. 
*/ 
- (void)fbDidLogin; 

/** 
* Called when the user dismissed the dialog without logging in. 
*/ 
- (void)fbDidNotLogin:(BOOL)cancelled; 

/** 
* Called when the user logged out. 
*/ 
- (void)fbDidLogout; 

Lea también comenta en Facebook.m:

  • Inicia un diálogo que pide al usuario para iniciar sesión en Facebook y conceder
  • la solicita permisos a la aplicación. *
  • Si el dispositivo es compatible con múltiples tareas, se utiliza la conmutación rápida aplicación para mostrar
  • el cuadro de diálogo de la aplicación de Facebook o, si la aplicación de Facebook no está instalado,
  • en Safari (esto permite inicio de sesión único permitiendo múltiples aplicaciones en
  • el dispositivo para compartir la misma sesión de usuario).
  • Cuando el usuario concede o deniega los permisos, la aplicación que
  • mostró el cuadro de diálogo (la aplicación de Facebook o Safari) vuelve a dirigir de nuevo a
  • la aplicación de llamada, que pasa en la URL del token de acceso
  • y/o cualquier otro parámetro de la backend Facebook incluye en
  • el resultado (tales como un código de error si se produce un error).
+1

NOTA: si usa el método "autorizar" de Facebook.h y ve este cuadro de diálogo, entonces su dispositivo no es compatible con la multitarea. – SVGreg

+0

@Gypsa: como dice Simon: necesita usar UIWebViewDelegate para capturar la acción de inicio de sesión. Y no encontré ningún otro enfoque. – SVGreg

Cuestiones relacionadas