2011-08-06 3 views
1

이것은 정말 이상한 오류입니다. 로그인 할 때 페이스 북 객체는 디바이스의 사파리에 쿠키를 저장하지 않지만 시뮬레이터에서는 수행합니다. 내가 어떻게 알아?Facebook iOS SDK가 액세스 용 쿠키를 저장하지 않습니다.

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]; 
    } 
} 

시뮬레이터에서 실행되는 동안 두 개의 쿠키 이름을 볼 수 있습니다. 나는 장치에 0을 얻는다. 이것은 페이스 북의 DemoApp에서도 일어납니다. 나는 이것이 어디에서 왔는지에 대한 단서가 없으므로 게시물을보다 완전하게 만들기 위해 어떤 정보를 제공 할 수 있는지 알지 못합니다. 제발, 지금 실종 된 것을 요청 해주세요. 이 코드는 DemoApp에서 온 것입니다. 변경/추가/제거되지 않았습니다.

감사합니다.

답변

12

iOS 라이브러리에서 이상한 점이있을 수 있습니다.

모든 iOS 앱에는 별도의 저장 공간이 있으며, 다른 앱이 속하지 않는 것을 유지할 수 있도록 보관됩니다. 이 샌드 박스는 악의적이거나 잘못 만들어진 앱이 다른 앱을 손상시키는 것을 방지합니다.

이것은 iPhone의 Safari에 해당됩니다. Safari의 세션에 설정된 쿠키는 앱에서 사용할 수 없습니다. 앱의 UIWebView에 설정된 쿠키는 Safari에서 사용할 수 없습니다. 데스크탑 OSX 시스템에서는 쿠키를 공유 할 수 있기 때문에 이에 대한 약간의 혼란이 있습니다. 클래스 메소드의 유혹스러운 이름 인 SharedHTTPCookieStorage에도 불구하고 iOS에서는 그렇게 할 수 없습니다.

Facebook SDK 인증 코드는 기기에서 인증하는 데 최대 3 가지 방법을 시도 할 수 있습니다 ... Facebook 앱을 호출하고 인증을 요청하여 해당 앱의 사용자가 한 번만 로그인하도록 허용 할 수 있습니다. FB 앱이 설치되어 있지 않으면 모바일 사파리 브라우저에 창을 열고 가능한 경우 브라우저의 샌드 박스에 쿠키를 설정하여 로그인하려고합니다. 둘 다 열 수 없으면 앱 공간에 UIWebView를 열고 앱에 로컬로 쿠키를 저장합니다.

나는 시뮬레이터와 아이폰의 다른 장소에서 인증이 일어나고 있으며 쿠키가 다른 곳에서 살아가고 있다고 생각한다.

정말 실망한 점은 좋은 싱글 사인온 기능을 사용하면 두 번째 로그온을하지 않아도 앱에서 UIWebviews를 Facebook에 열 수 없다는 것입니다. 쿠키는 사용할 수 없습니다.

+0

아직도 그렇습니까? 사용자가 두 번 로그인하도록하는 것이 귀찮아서 지금이 문제를 해결할 수있는 방법이 있는지 궁금합니다. – Smikey

+3

예 - 변경 사항이 보이지 않습니다. 페이스 북의 인증 프로세스는 실제로 토큰을 얻는 것에 관한 것이므로 API를 사용할 수 있습니다. 브라우저 쿠키는 부수적 인 이점입니다. FB 앱은 싱글 사인온 (single signon)을 통해 API 호출을 사용하기위한 인증 토큰을 제공하므로 브라우저 쿠키를 가져 오는 것이 다른 작업으로 간주됩니다. 인증 토큰은 제한된 권한으로 로그인하는 앱입니다. 반면 브라우저 쿠키는 사용자가가는성에 대한 키의 일종입니다. – giff

관련 문제