有人可以帮助我快速使用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
}
在这个区块中,我想使用以下网址登录我的网站:
"http://my-website.com/authme.php?token=\(oauth2!.accessToken!)"
我尝试过webview.load并没有成功,但是如果我在另一个函数中执行请求,那么evrything的工作原理就像一个魅力
预先感谢
编辑更多信息
我认为是由于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)")
}
}