     }
 
     fileprivate func removeWebView(_ webView: WKWebView, tuples: ([String: Any]?, URLResponse?, Swift.Error?)?) {
-
         activityIndicatorViewAction(webView, stop: true)
         webView.stopLoading()
-
         UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseOut, animations: {
             webView.frame.origin.y = UIScreen.main.bounds.height
-
         }, completion: { [weak self] _ in
             webView.removeFromSuperview()
             MonkeyKing.sharedMonkeyKing.webView = nil

                ]
                let data = NSKeyedArchiver.archivedData(withRootObject: dic)
                UIPasteboard.general.setData(data, forPasteboardType: "com.tencent.tencent\(appID)")

                if !openURL(urlString: "mqqOpensdkSSoLogin://SSoLogin/tencent\(appID)/com.tencent.tencent\(appID)?generalpastboard=1") {
                    completionHandler(nil, nil, NSError(domain: "OAuth Error, cannot open url mqqOpensdkSSoLogin://", code: -1, userInfo: nil))
                }

                return
            }

            // Web OAuth

            let accessTokenAPI = "https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&pt_3rd_aid=209656&style=35&s_url=http%3A%2F%2Fconnect.qq.com&refer_cgi=m_authorize&client_id=\(appID)&redirect_uri=auth%3A%2F%2Fwww.qq.com&response_type=token&scope=\(scope)"
            addWebView(withURLString: accessTokenAPI)

        case .weibo(let appID, _, let redirectURL):

            let scope = scope ?? "all"

            guard !account.isAppInstalled else {

                let uuidString = UUID().uuidString

                let transferObjectData = NSKeyedArchiver.archivedData(withRootObject: [
                    "__class": "WBAuthorizeRequest",
                    "redirectURI": redirectURL,

private extension URL {

    var monkeyking_queryDictionary: [String: Any] {
        let components = URLComponents(url: self, resolvingAgainstBaseURL: false)
        guard let items = components?.queryItems else {
            return [:]
        }
        var infos = [String: Any]()
        items.forEach {
            if let value = $0.value {
                infos[$0.name] = value
            }
        }
        return infos
    }
}
