Обработчик завершения SFAuthenticationSession не вызывается при использовании аутентификации Azure Facebook - PullRequest
0 голосов
/ 15 октября 2019

Я реализую вход в Facebook через свое приложение, используя Azure B2C, и для этого мне нужно использовать SFAuthenticationSession, потому что FB не позволяет ему работать внутри WKWebView.

Я в основном пытаюсь реализовать SFAuthenticationSession с URL-адресом, возвращаемым со стороны моего сервера, который выглядит примерно так:

https://companyName.b2clogin.com/companyName.onmicrosoft.com/oauth2/v2.0/authorize?client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&nonce=xxxxxxx-xxxxx-xxxx-xxxxxx-xxxxxxxxxx&response_type=code&redirect_uri=https://myrul-qa.azurewebsites.net&response_mode=query&scope=offline_access%20openid%20xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx&state=xxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx&domain_hint=facebook.com&p=B2C_1_SiUpIn

Проблема в том, что мой обработчик завершения не вызывается.

Мой код в основном такой:

    var authSession: SFAuthenticationSession?

    func auth(url: URL) {

        authSession?.cancel()

        self.authSession = SFAuthenticationSession(url: url, callbackURLScheme: nil) { (url, error) in
            # this completion here is not getting called
            if error != nil { return }

            UIApplication.shared.open(url!)
        }

        self.authSession?.start()
    }

Если я попробую этот путь, используя URL-адрес facebook вместо моего URL-адреса Azure B2C, будет получено завершение:

    func auth2() {
        let appID = Constant.facebookId

        var components = URLComponents()
        components.scheme = "https"
        components.host = "m.facebook.com"
        components.path = "/v2.11/dialog/oauth"

        let clientID = URLQueryItem(name: "client_id", value: appID)
        let display = URLQueryItem(name: "display", value: "touch")
        let redirectURI = URLQueryItem(name: "redirect_uri", value: "fb\(appID)://authorize/")

        components.queryItems = [clientID, display, redirectURI]

        self.authSession = SFAuthenticationSession(url: components.url!, callbackURLScheme: nil) { (url, _) in
            UIApplication.shared.open(url!)
        }

        self.authSession?.start()
    }

Я ожидаю, что завершение можно вызвать с помощью моего Azure B2C с SFAuthenticationSession.

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