Быстро, есть ли способ войти на веб-сайт с токеном, полученным с помощью библиотеки OAuth2? - PullRequest
0 голосов
/ 07 мая 2020

есть ли кто-нибудь, кто может быстро помочь мне с библиотекой OAuth2. Я делаю это, чтобы обработать конец OAuth

appDelegate.oauth2!.afterAuthorizeOrFail = { authParameters, error in
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        let myString = formatter.string(from: appDelegate.oauth2!.accessTokenExpiry!)
        print("t \(appDelegate.oauth2!.accessToken)")
        print("td \(myString)")
        //login me here with oauth2.accessToken

}

В этом блоке я хочу войти на свой веб-сайт с URL-адресом, например это: "http://my-website.com/authme.php?token=\(oauth2!.accessToken!)"

Я пробовал webview.load и безуспешно, но если я выполняю запрос в другой функции, все работает как шарм

Заранее благодарю

РЕДАКТИРОВАТЬ Подробнее

Я думаю, это связано с тем, что afterAuthorizeOrFail, кажется, вызывается в фоновом режиме

Вот как afterAuthorizeOrFail вызывается didFail и didAuthorize, причем единственными отличиями являются аргументы функции в эти методы

public final func didFail(with error: OAuth2Error?) {
        var finalError = error
        if let error = finalError {
            logger?.debug("OAuth2", msg: "\(error)")
        }
        else {
            finalError = OAuth2Error.requestCancelled
        }
        callOnMainThread() {
            self.didAuthorizeOrFail?(nil, finalError)
            self.didAuthorizeOrFail = nil
            self.internalAfterAuthorizeOrFail?(true, finalError)
            self.afterAuthorizeOrFail?(nil, finalError)
        }
    }

Вот исходный файл с этим методом https://github.com/p2/OAuth2/blob/master/Sources/Base/OAuth2Base.swift

и callOnMainThread таков:

public func callOnMainThread(_ callback: (() -> Void)) {
    if Thread.isMainThread {
        callback()
    }
    else {
        DispatchQueue.main.sync(execute: callback)
    }
}

Вот исходный файл этим методом https://github.com/p2/OAuth2/blob/master/Sources/Base/OAuth2Requestable.swift

А вот как я делаю запрос

  let requrl=URL(string: "http://my-website.com/authme.php?token=\(oauth2!.accessToken!)")
     do{
        let request = try URLRequest(url: requrl!,method: .post)
        self.webView!.load(request)
     }catch let error {
       DispatchQueue.main.async {
       print("ERROR loading site \(error)")
     }
 }

1 Ответ

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

Проблема заключалась в том, что я использовал неправильный WKWebview (не тот, который указан в раскадровке). Изменение этого исправляет мою проблему

...