2

사용자가 웹보기에서 사용자 이름과 암호를 입력하여 두 앱 중 하나에 로그인 할 때받은 동일한 키 체인 토큰을 공유하는 두 개의 IOS 응용 프로그램에서 작업하고 있습니다. 키 체인에 저장된 토큰은 몇 시간/일 동안 제한되며 사용자가 앱을 사용하고 브라우저에서 열리는 항목을 요청/입력하면 새로 고쳐집니다.iOS 11에서 SFAuthenticationSession을 사용하여 SSO 만들기

iOS 11이 출시되기 전까지 앱의 웹보기는 SFSafariViewController 인스턴스였으며 앱간에 쿠키를 공유하고 사용자가 한 앱의 브라우저에 로그인하면 매우 편리했습니다. 자동으로 다른 앱에 로그인하여 SSO 환경을 얻게됩니다.

iOS 11에서는 SFSafariViewController의 동작이 변경되어 더 이상 내 두 앱의 다른 SFSafariViewController 인스턴스간에 쿠키를 공유하지 않습니다. 대신, 애플은 SFAuthenticationSession을 사용하여 동일한 동작을 수행하기를 원합니다.

내 응용 프로그램에는 약 50 개의 행이있는 테이블이 있으며 거의 ​​모든 테이블이 SFSafariViewController에서 다른 URL을 엽니 다. 이제 iOS 11에서는 매번 SFAuthenticationSession의 새 인스턴스를 만들 필요가 있습니다. 인스턴스가 만들어지면 URL을 변경할 수 없습니다. 실제로 웹보기를 표시하려면 start() 메서드를 호출해야합니다. 이 인스턴스에. 그러나이 메소드는 같은 인스턴스에서 한 번만 호출 할 수 있습니다 (그렇지 않으면 'false'를 반환하고 아무 것도하지 않습니다). 그리고 호출 될 때마다 "myapp"가 "mydomain.com"을 사용하려고한다는 알림을 보냅니다. 로그인하십시오. 즉, 사용자는 테이블의 한 행에있는 모든 탭에서이 경고 메시지를 보게됩니다.

내 앱이 동의 경고 메시지를 한 번만 표시하도록 할 수 있습니까? 예 : 처음이나 뭔가? 내 사용자가 내 두 앱에서 SSO 환경을 갖기를 원하기 때문에 처음에는 SFSafariViewController를 사용했지만, 앱에서 모든 탭에서이 성가신 경고를 보지 못하게해야합니다.

답변

2

현재 SFAuthenticationSession을 사용하여 경고 메시지를 한 번만 표시하는 방법은 없습니다. 우리 앱에서도 동일한 문제가 발생합니다.

나는 다른 많은 사람들과 함께 이것에 관한 버그를 Apple에 제출하여 제안한 것처럼 한 번만 표시하도록 요청했습니다. this GitHub thread의 끝 부분에서 경고에 대해 설명합니다.