2010-02-09 2 views
0

Facebook 문서를 많이 읽었지만 세션 객체의 역할에 대해서는 상당히 혼란 스럽습니다. 예를 들어, 방법 :iPhone 용 Facebook Connect의 세션 객체에 대한 혼동

session = [FBSession sessionForApplication:myApiKey secret:myAppSecret delegate:self]; 

은 내가 아무것도하기 위해 대리인 콜백 기다릴 필요가있을 때 아마, 나에게 반환되는 세션 객체로 무엇을 해야하는 거?

두 번째로 ... 이전 실행 중에 사용자가 내 계정에 액세스하도록 허용 한 경우 내 Facebook 앱에 연결할 수 있도록 세션 객체에 대한 참조를 얻는 방법 상태 등? 문서에는 [세션 이력서]가 언급되어 있지만 그 세션 참조가 어디에서 왔는지는 밝히지 않았습니다. ([[FBSession session] resume] 호출은 컴파일되지만 작동하지 않습니다.)

감사합니다.

답변

2

무엇이든지하기 위해 대리자 콜백을 기다려야 할 때 아마도 나에게 반환되는 세션 개체를 어떻게 처리해야합니까?

FBLoginDialog을 생성하여 표시해야합니다. 대리자 메서드는 사용자가 로그인 할 때까지 호출되지 않습니다. 처음에는 세션 인스턴스를 만드는 것과 아무런 관련이 없습니다.

은 어떻게 세션 객체에 대한 참조는 그래서 자신의 페이스 북 계정

페이스 북 연결 라이브러리는 앱의 사용자 기본 설정에서 세션 정보를 저장할에 연결할 수 있습니다 어떻게해야합니까. 그것을 저장하는 데 아무 것도 할 필요가 없습니다. 내가 이해할 때마다 앱을 시작할 때마다 +sessionForApplication:secret:delegate:으로 세션 객체를 만든 다음 [session resume]으로 호출해야합니다. FBConnect 라이브러리가 사용자 기본값에 저장된 유효한 세션을 찾으면 YES을 반환하고 사용자가 현재 로그인 한 상태에서 계속 진행할 수 있습니다. resumeNO을 반환하면 로그인 대화 상자를 표시해야합니다. Facebook's docs에서

:

세션 정보는 응용 프로그램의 환경 설정에서 아이폰 디스크에 저장됩니다, 그래서 당신은 그들이 당신의 응용 프로그램을 사용할 때마다 로그인하는 사용자에게 필요가 없습니다. 세션 객체를 생성 한 후 [session resume]을 호출하여 이전 세션을 다시 시작하십시오. 세션이 만료되었거나 아직 세션을 만들지 않은 경우 NO를 반환하고 사용자에게 로그인해야합니다. 세션은 2 시간 동안 사용하지 않으면 만료됩니다.

+0

당신이 말했듯이 "앱을 시작할 때마다 + sessionForApplication : secret : delegate :로 세션 개체를 만든 다음 [session resume]을 호출해야합니다." 내 질문 : 유효한 세션이이 메서드 또는 대리자에 전달 된 세션 개체의 반환 값이 있습니까? 그것이 이전의 경우 왜 대리인이 필요합니까? (델리게이트가 충돌을 일으키기 때문에 nil을 전달합니다.) 후자라면 반환 된 세션 객체의 포인트는 무엇입니까? 감사. –

+0

둘 다 같은 대상이므로 똑같이 유효합니다. 델리게이트 메소드가 델리게이트 객체를 매개 변수로 포함하여 프로그래머가 델리게이트 메시지가 어떤 객체인지 식별 ​​할 수 있도록하는 것이 일반적입니다. 귀하의 질문에 관해서는 "왜 대리인이 필요합니까?": 세션 생성은 로그인과 동일하지 않기 때문에 세션 객체를 만든 후에 FBLoginDialog를 호출 한 다음 FBSession이 대리인을 사용할 것입니다 메서드를 사용하여 사용자가 실제로 로그인했을 때 알려줍니다. 그 시점에서 세션을 계속 사용할 수 있습니다. –

+0

감사합니다 ...하지만 사용자가 이미 로그인했는지 어떻게 알 수 있습니까? 대화 상자에 대화 상자를 표시 할 필요는 없습니다. 페이스 북 대화 상자가 매번 나타나지 않게하고 싶습니다. (사용자가 이미 로그인 한 상태에서 FBDialog를 호출하면 열려 있고 닫히고주의가 산만 해집니다.) –

1

이것은 올레 (Ole)의 답변과 의견에 실제로 나와 있습니다. 이것이 내가 한 일이다.

첫째 세션 객체를 생성 :

facebookSession = [[FBSession sessionForApplication:SESSION secret:SECRET delegate:self]retain];  
[facebookSession resume]; 

두 번째 줄은 사용자가 로그인 유지하고 싶은 것을 지정하는 경우가 로그온 유지하기 위해 설정 파일에서 세션 데이터를 가져옵니다.나는 아무것도 사용하지 않지만

- (void)session:(FBSession*)session didLogin:(FBUID)uid 

:

당신은 방법을 구현해야한다. 다음

[[FBSession session] isConnected] 

및 로그인 대화 상자를 표시하거나 직선 이미 로그온 한 경우 게시 대화 상자에 다음 중 하나를

은 사용자가 이미 로그온 한 경우, 내가 전화를 확인하십시오.