Аутентификация из веб-просмотра в собственном приложении iOS? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть внутренний веб-сервер, который обрабатывает проверку подлинности веб-сайта (html) из электронной почты, facebook, google ....

Можно ли загрузить веб-форму проверки подлинности в собственный веб просмотреть, перехватить ответ аутентификации от собственного приложения и сохранить состояние входа в собственное приложение, чтобы собственное приложение могло затем отправлять авторизованные запросы REST на внутренний сервер?

Возможен ли этот сценарий?

1 Ответ

0 голосов
/ 07 мая 2020

Да, это возможно с помощью WKWebView. Он имеет API делегата навигации

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

Используя вышеуказанный API, вы можете проверить токен доступа, который поступает через cook ie.

Objective- c

 WKWebsiteDataStore *dataStore = webView.configuration.websiteDataStore;
 WKHTTPCookieStore *cookieStore = dataStore.httpCookieStore;
 [cookieStore getAllCookies:^(NSArray<NSHTTPCookie*> *cookieArray) {

      NSString *cookieValue = nil;
      for (NSHTTPCookie *cookie in cookieArray) {

            if ([cookie.name isEqualToString:@"access_token"]) {
                 NSString *accessToken = cookie.value;
                }
            }
}];

Swift

let dataStore = webView.configuration.websiteDataStore
let cookieStore = dataStore.httpCookieStore
cookieStore.getAllCookies({ cookieArray in

let cookieValue: String? = nil
for cookie in cookieArray ?? [] {

    if (cookie.name == "access_token") {
        let accessToken = cookie.value
    }
}

})

Это то, что я делаю в нашем проекте. Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...