есть ли кто-нибудь, кто может быстро помочь мне с библиотекой 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)")
}
}