2012-10-07 62 views
6

En mi aplicación de iPhone, deseo que el usuario pueda compartir un enlace en Facebook.SDK de Facebook: la ventana emergente de inicio de sesión de iOS6 no puede descartarse

Cuando hacen clic en "compartir", utilizo el siguiente código para iniciar sesión en Facebook utilizando el nuevo SDK 3.1, luego uso FBRequestConnection en el controlador de finalización (un simple publish_action).

[FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:true completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 

    // Now call FBRequestConnection to post in the stream 

}]; 

Cuando el usuario tiene instalada la aplicación de Facebook, simplemente delega el inicio de sesión en la aplicación. Sin embargo, cuando no lo hacen, abre la página de inicio de sesión en un WebView.

En iOS 5, se abre Safari Mobile:

enter image description here

Mi problema es en iOS 6, consigo mismo flujo pero en una ventana emergente modal lugar (en la parte superior de mi aplicación).

enter image description here

tengo 2 problemas con el emergente:

1. cerrándola

No se puede cancelar o despedido. En comparación, la aplicación HelloFacebookSample del SDK tiene la misma ventana emergente pero con un botón cruzado para cerrarla.

enter image description here

NOTA: ahora resueltos gracias a Ravi , me faltaba el paquete de recursos de Facebook, que contiene el "cierre" de la imagen.

2. Aceptación de los permisos

En el segundo paso de la ventana emergente (ver pantallas anteriores), presionando Okay no hacer nada. Presionar la "X" llama al controlador de finalización con un error, que es genial, pero no ocurre nada con Okay. ¿Es esta la manera correcta de iniciar sesión en Facebook con el SDK 3.1? ¿Me falta una devolución de llamada para reaccionar a la ventana emergente específicamente?

Algunas aclaraciones más:

Esto sólo ocurre en iOS6 cuando la aplicación de Facebook es no instalado y la cuenta de Facebook es No configurado en la configuración de IOS .

Gracias!

+0

1 im tener un problema similar después de FB se actualiza a 3.0SDk – iMeMyself

+1

Podría ser un error en el SDK. Solo una nota; Facebook alienta a pedir permisos de publicación cuando realmente está publicando (y no cuando se conecta): http://developers.facebook.com/docs/howtos/ios-6/ –

+0

Gracias Kristofer - por "ejecutar una publicación_acción más adelante" en realidad significa tan pronto como llega la devolución de llamada de inicio de sesión. Creo que debería estar bien – Gromix

Respuesta

7

No puedo hacer ningún comentario ya que mi reputación es inferior a 50, así que trato de señalar mis observaciones como respuesta.

También noté este problema al utilizar Facebook sdk3.1 en ios6.En mi caso, estoy usando la creación de objetos facebook de estilo antiguo y llamo al [facebook authorize:permissions], pero modifiqué el código fuente para usar siempre "FBSessionLoginBehaviorForcingWebView" para que mi inicio de sesión sea siempre a través del inicio de sesión en la aplicación web.

En mi caso me faltaba FBUserSettingsViewResources.bundle y FacebookSDKResources.bundle, así que no pude ver el botón con la cruz (pero pude tocar ese punto y recibir la llamada - (void)fbDidNotLogin:(BOOL)cancelled {).

+0

Gracias tanto, esto es definitivamente un paso en la dirección correcta! Me faltaba el paquete de recursos también. Ahora puedo ver y tocar el botón de cerrar. El botón "Aceptar" de la derecha todavía no hace nada, lo que podría ser un problema diferente. – Gromix

+0

incluso después de agregar FBUserSettingsViewResources.bundle y FacwebookSDKResources.bundle no puedo ver el botón Cancelar ... – iMeMyself

+0

@ravi: si no te molesta que pregunte, ¿qué obtienes de esa segunda ventana emergente de WebView diciendo 'Ya has autorizado esta aplicación [ De acuerdo] '? Y si es así, ¿sabe a qué método se llama cuando hace clic en 'Aceptar'? Parece que no puedo entender por qué el mío no está conectado correctamente. – Gromix

0

También me encontré con este tema y que parece ser un error conocido:

https://developers.facebook.com/bugs/539702426044893?browse=search_507daefc9af416244781488

no he resuelto el problema todavía, pero para mí sólo parece suceder en el simulador. Mi aplicación parece iniciar sesión siempre a través de Safari cuando se instala en un dispositivo

Editar: Así que después de un poco más de excavación me encontré con este hilo de desbordamiento de pila: FBConnect login, share with a webview?

me di cuenta de que el diálogo que estamos viendo es una uiWebView, que en realidad es la alternativa si la aplicación no puede abrir el diálogo en safari. Pude solucionar mi problema al restablecer mi simulador, lo que esencialmente eliminaría las cookies. Desde su captura de pantalla, creo que también está trabajando en el simulador. Me pregunto si reiniciar el simulador si tuviera los mismos resultados.

En el menú simulador de iOS -> Restablecer contenidos y ajustes ...

Cuestiones relacionadas