public func authorize(withCallback callbackURL: URL,
presentingFrom presenting: UIViewController?,
forceLogin: Bool = false,
safariDelegate: SFSafariViewControllerDelegate? = nil,
success: TokenSuccessHandler?,
failure: FailureHandler? = nil){
self.postOAuthRequestToken(with: callbackURL, success: { token, response in
var requestToken = token!
NotificationCenter.default.addObserver(forName: .swifterCallback, object: nil, queue: .main)
{ 通知中 NotificationCenter.default.removeObserver(个体) presenting?.presentedViewController?.dismiss(动画:true,完成:无) 让url = notification.userInfo![CallbackNotification.optionsURLKey]为!网址
let parameters = url.query!.queryStringParameters
requestToken.verifier = parameters["oauth_verifier"]
self.postOAuthAccessToken(with: requestToken, success: { accessToken, response in
print("accessToken:\(accessToken)------response:\(response)")
self.client.credential = Credential(accessToken: accessToken!)
success?(accessToken!, response)
}, failure: failure)
}
let forceLogin = forceLogin ? "&force_login=true" : ""
let query = "oauth/authorize?oauth_token=\(token!.key)\(forceLogin)"
let queryUrl = URL(string: query, relativeTo: TwitterURL.oauth.url)!
if #available(iOS 9.0, *) {
if let delegate = safariDelegate ?? (presenting as? SFSafariViewControllerDelegate) {
let safariView = SFSafariViewController(url: queryUrl)
safariView.delegate = delegate
safariView.modalTransitionStyle = .coverVertical
safariView.modalPresentationStyle = .overFullScreen
presenting?.present(safariView, animated: true, completion: nil)
} else {
UIApplication.shared.openURL(queryUrl)
}
} else {
// Fallback on earlier versions
}
}, failure: failure)
}