Обработчик завершения сеанса не вызывается для ASWebAuthenticationSession - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь использовать веб-представление ASWebAuthenticationSession. После завершения аутентификации обработчик завершения сеанса не вызывается. Следовательно, веб-представление не отклоняется.

guard let authURL = URL(string: "https://github.com/login/oauth/authorize?client_id=<client_id>/") 
else { return }
let scheme = "octonotes"
session = ASWebAuthenticationSession.init(url: authURL, callbackURLScheme: scheme, completionHandler: { callbackURL, error in
       // Handle the callback.
       print(callbackURL!)
       print(error!)      
        })
session?.presentationContextProvider = self
session?.start()

Я установил схему URL обратного вызова в info.plist. То же самое обновляется в Targets -> info -> Типы URL. Это выглядит так: Типы URL

После запуска приведенного выше кода открывается веб-представление ASWebAuthenticationSession, которое предоставляет пользователю возможность входа на страницу. , Как только аутентификация завершена, веб-представление не закрывается в отличие от WKWebView. В левом верхнем углу веб-представления есть опция отмены, она вызывает обработчик завершения с ошибкой.

Есть ли способ закрыть веб-просмотр после завершения сеанса аутентификации?

1 Ответ

0 голосов
/ 18 апреля 2020

Похоже, что вы пропустили URI перенаправления в вашем authURL - поэтому GitHub не знает, куда перенаправить успешную аутентификацию.

Попробуйте:

let scheme = "octonotes"
guard let authURL = URL(string: "https://github.com/login/oauth/authorize?client_id=<client_id>&redirect_uri=\(scheme)://authcallback")

Bear Имейте в виду, что вы можете пропустить некоторые другие параметры, посмотрите здесь другие, которые вы можете предоставить https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#redirect -urls

...