terceros - Facebook iOS SDK no almacena cookies para acceder
las cookies deben estar habilitadas en su navegador (1)
Es posible que se encuentre con algo extraño con la biblioteca de iOS.
Recuerde que todas las aplicaciones de iOS tienen espacio de almacenamiento separado; se mantienen de esa manera para que otra aplicación no pueda tocar cosas que no le pertenecen. Este entorno de pruebas impide que las aplicaciones maliciosas o mal hechas dañen cualquier cosa que no sean ellos mismos.
Esto es cierto para Safari en el iPhone: las cookies establecidas para una sesión en Safari NO están disponibles para su aplicación. Las cookies establecidas en UIWebView en su aplicación NO ESTÁN disponibles para Safari. Existe cierta confusión sobre esto ya que en el sistema OSX de escritorio, puede compartir cookies. No puede hacerlo en iOS, a pesar del nombre tentador del método de clase, SharedHTTPCookieStorage.
El código de autenticación de Facebook SDK puede probar hasta tres formas de autenticarse en un dispositivo ... Puede llamar a la aplicación de Facebook y solicitar autenticarse a través de ella, lo que permite a los usuarios de esa aplicación iniciar sesión solo una vez. Si la aplicación FB no está instalada, se abre una ventana en el navegador Safari móvil e intenta iniciar sesión allí, estableciendo cookies en la zona de pruebas del navegador si es posible. Si no puede abrir ninguno, abre UIWebView en el espacio de su aplicación y almacena sus cookies locales en su aplicación.
Supongo que la autenticación está sucediendo en diferentes lugares en tu simulador y en tu iPhone, y las cookies viven en otro lugar.
Lo que es realmente frustrante es que si utiliza la característica de inicio de sesión único agradable, no puede abrir UIWebviews en Facebook en su aplicación sin forzar un segundo inicio de sesión. Las cookies no están disponibles para ti.
Este es un error realmente extraño. Al iniciar sesión, el objeto facebook no almacena cookies en Safari en el dispositivo, pero sí en el simulador. ¿Cómo puedo saber?
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString* domainName = [cookie domain];
NSLog(domainName);
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}
Mientras corro en Simulator, puedo ver el nombre de dos cookies. Obtengo cero en el dispositivo. Esto está sucediendo incluso con la DemoApp de Facebook. No tengo ni idea de dónde viene esto, así que realmente no sé qué información podría proporcionar para que la publicación sea más completa. Por favor, solicítenme cualquier cosa que me pierda ahora. El código es solo de DemoApp, no he cambiado / agregado / eliminado nada.
Gracias.