@Owen Hartnett의 답변은이 텍스트가 주석에 맞지 않으므로 정교하게 설명하십시오. 이것은 Facebook의 SDK 작업을 본 것입니다. 유일한 로그인 메커니즘으로 Facebook iOS SDK를 사용하는 앱을 만드는 경우 작동 방식은 다음과 같습니다.
내 앱 대리인의 didFinishLaunchingWithOptions
메서드에서 먼저 "이미 파일에 있습니다"라는 액세스 토큰을 확인합니다 , NSUserDefaults
. 찾지 못하면 하나를 가져와야하므로 내 앱 대리인이 즉시 유효한 액세스 토큰으로 끝나는 모달 로그인 흐름을 실행 한 다음 NSUserDefaults
에 저장하여 다음 앱을 사용할 수 있도록해야합니다.
내 didFinishLaunchingWithOptions
에 이미 파일에 액세스 토큰이있는 경우 응용 프로그램을 열 때 파일에서 찾은 액세스 토큰을 사용하여 행복 경로를 가정하고 비동기 적으로 "로그인 한 사용자 세션"을 엽니 다. 세션에서 파일을 여는 액세스 토큰이 합법적 인 경우 UX가 표시되지 않습니다. 파일에있는 액세스 토큰이 불법적 인 액세스 토큰 (예 : 서버가 너무 오래되었다고 말하면) 인 경우, 내 응용 프로그램 대리인의 내 공개 세션 메서드에서이를 발견하면 적절한 모달 로그인 흐름이 표시됩니다.
이 openSession 메서드는 비동기 적으로 실행되기 때문에 로그인 한 사용자가 필요한 루트보기 컨트롤러가 그동안 작동 할 것인지 궁금 할 수 있습니다.
답변은 로그인 한 사용자가있는 것처럼 작성해야한다는 것입니다. 그것은 가정해야합니다. 유효한 액세스 토큰이 없기 때문에 실행 또는 실행이 불가능한 코드를 실행하면 해당 코드는 로그인 UI 을 표시해야합니다. 아직 표시되지 않은 경우 (즉, 앱의 액세스 토큰 검사가 이번에는 이미 사용자에게 모달 로그인 UI가 제공되었습니다.)
마지막으로, Facebook SDK 로그인 흐름의 번역 버전입니다. 예를 들어 SDK 만 사용하는 경우 NSUserDefaults
과 인터페이스하지 않을 것입니다. 저는 그들의 흐름을 원격 API에 로그인하는 "맞춤 구현"으로 번역했습니다.
나는이 길로 갔다. 나는 응용 프로그램이로드 될 때 rootViewController를 설정하는 PathFinderViewController를 만들었습니다. 이것은 어디로 갈지를 확인합니다. 로그인해야하는 경우 로그인 화면을 모달로 표시하고 로그인을 시도합니다. 성공하면 로그인 화면을 닫고 rootViewController를 UserViewController로 변경합니다. PathFinder가 Auth_Token이 유효하다면 rootViewController를 UsersViewController로 변경합니다. 감사! – sbonkosky
@sbonkosky 기꺼이 도와 드리겠습니다. :). 어떻게 흐름도를 만들었습니까? – Anupdas
[LucidChart] (http://www.lucidchart.com/)를 사용했습니다. – sbonkosky