2010-12-20 7 views
5

W tym celu, powiedzmy, mam aplikację zawierającą pojedynczy widok interfejsu użytkownika.iPhone - interfejs UIWebview nie zapisuje uwierzytelniania w witrynach

Załaduję prośbę do dowolnej z tych witryn: facebook, gmail, twitter itp. I otrzymuję ekran logowania.

Chodzi o to, że po zalogowaniu i ponownym uruchomieniu aplikacji będę musiał ponownie przejść przez ekran logowania.

Na przykład w aplikacji Mobile Safari/Google zachowałabym swój plik cookie/szczegóły sesji/czegokolwiek i nie musiałbym ponownie wprowadzać swoich danych logowania. Takie zachowanie chcę mieć.

Rzeczy próbowałem:

  • wysyłania plików cookie z NSHTTPCookieStorage poprzez NSURLRequest.
  • Trwałość plików cookie dla NSUserDefaults, ale bez powodzenia.

Jak mogę osiągnąć zachowanie Mobile Safari & Google aplikacja?

+2

To na pewno możliwe, jak widzę teraz, że aplikacja Google robi. Ale jak? – Gilbert

+0

Witam @Gilbert Próbowałem osiągnąć ten sam wynik, który podałeś. Oznaczyłeś poniższą odpowiedź jako Zaakceptowaną. Wiem, jak zapisać i/lub załadować pliki cookie po zamknięciu/uruchomieniu aplikacji, ale czy możesz mi powiedzieć, w jaki sposób można uzyskać pliki cookie z NSURLRequest? – ShayanK

+2

NSURLConnection automatycznie zapisuje ciasteczka, które otrzymujesz widok NSURLRequest, chyba że podano inaczej. – Gilbert

Odpowiedz

5

Pliki cookie należy zarchiwizować i przechowywać po zakończeniu aplikacji, a następnie ponownie załadować, gdy aplikacja stanie się aktywna. Można to osiągnąć poprzez:

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

+2

Najwyraźniej zepsułem archiwizację. Dziękuję, potroiłem to i sprawdziłem automagicznie. – Gilbert

-1

Użyj klasy asiHTTPrequest. Bardzo pomógł mi w moich projektach.

+2

Czy mógłbyś proszę wyjaśnić, jak osiągnąć mój cel za pomocą ASIHTTPRequest? – Gilbert

+0

Możesz użyć tego kodu do obsługi plików cookie przy użyciu ASIHTTPRequest: NSHTTPCookie * cookie = [[[NSHTTPCookie alloc] initWithProperties: properties] autorelease]; –