2010-12-20 9 views
5

Para estos fines, supongamos que tengo una aplicación que contiene una sola UIWebview.iPhone - UIWebview no guarda la autenticación en los sitios

Estoy cargando una solicitud a cualquiera de estos sitios: Facebook, Gmail, Twitter, etc., y recibo una pantalla de inicio de sesión.

La cuestión es que, si inicio sesión y reinicio la aplicación, tendré que volver a acceder a la pantalla de inicio de sesión.

En Mobile Safari/Google app, por ejemplo, retendría mi cookie de inicio de sesión/detalles de la sesión/whatnot y no necesitaría volver a ingresar mis credenciales de usuario. Ese es el comportamiento que quiero tener.

cosas me trató:

  • el envío de las galletas de la NSHTTPCookieStorage a través de la NSURLRequest.
  • Persistiendo las cookies a NSUserDefaults, pero no tuve suerte.

¿Cómo puedo conseguir el comportamiento Mobile Safari & aplicación de Google tiene?

+2

Es definitivamente posible, como lo veo ahora que la aplicación Google lo hace. ¿Pero cómo? – Gilbert

+0

Hola @Gilbert He estado tratando de lograr el mismo resultado que usted especificó. Marcó la respuesta a continuación como Aceptada. Sé cómo guardar y/o cargar cookies cuando la aplicación se cierra/se inicia, pero ¿podría decirme cómo se obtienen las cookies de una solicitud NSURL? – ShayanK

+2

NSURLConnection guarda automáticamente las cookies que recibe, vea NSURLRequest, a menos que se especifique lo contrario. – Gilbert

Respuesta

5

Las cookies deben archivarse y persistir cuando la aplicación finaliza y luego se vuelve a cargar cuando la aplicación se activa. Esto se puede conseguir por:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:url mainDocumentURL:nil]; // where cookies is the unarchived array of cookies

+2

Aparentemente arruiné el archivo. Gracias a ti, lo compré tres veces y funciona automágicamente. – Gilbert

-1

Utilice asiHTTPrequest clase. Realmente me ayudó mucho en mis proyectos.

+2

¿Podría explicar cómo lograr mi objetivo con ASIHTTPRequest? – Gilbert

+0

Puede usar este código para manejar cookies utilizando ASIHTTPRequest: NSHTTPCookie * cookie = [[[NSHTTPCookie alloc] initWithProperties: properties] autorelease]; –

Cuestiones relacionadas