快速地,有没有一种方法可以使用OAuth2库获得的令牌登录网站?

时间:2020-05-07 10:16:26

标签: swift oauth oauth-2.0

有人可以帮助我快速使用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)")
     }
 }

0 个答案:

没有答案
相关问题