No Description

UserInfoLoginKit.swift 5.8KB

    // // UserInfoLoginKit.swift // PaiAi // // Created by FFIB on 16/4/1. // Copyright © 2016年 FFIB. All rights reserved. // import Foundation func GuestLogin(_ callback: @escaping ((_ success: Bool) -> Void)) { // #if (arch(i386) || arch(x86_64)) // SharedUserInfo.userId = "zmouhsF" // SharedUserInfo.name = "游客63" // SharedUserInfo.synchronize() // callback(true) // #else NetworkApi.share.post(param: ["uuid": SharedUserInfo.uuid as AnyObject], url: .guestLogin) { (result) in guard let status = result["status"] as? Int, let data = result["data"] as? StringKeyDic, let nickname = data["nickname"] as? String, let user_id = data["user_id"] as? String, status == 200 else { callback(false) return } SharedUserInfo.userId = user_id SharedUserInfo.name = nickname SharedUserInfo.userName = data["username"] as? String ?? "" SharedUserInfo.synchronize() callback(true) } // #endif } func UserLogIn(_ callback : @escaping ((_ success: Bool) -> Void), failure: @escaping failureWithParam) { #if (arch(i386) || arch(x86_64)) SharedUserInfo.userId = "fiDz2Ms" SharedUserInfo.name = "郑剑飞" SharedUserInfo.photoPath = "http://wx.qlogo.cn/mmopen/G7eMkvJia9eQgR1rJFHJedLAh5vgDZGVua3zLLULRjbXxB1EVTlXs1IhIo5Z0mfl7Psdk2gMiau3nfe6Vu7icBEdj2OIPPKlSuz/0" SharedUserInfo.synchronize() callback(true) return #else LoginWithWeChat { (resultWX, error) in failure("微信授权失败") guard var resultWX = resultWX, let openId = resultWX["openid"] as? String, error == nil else { callback(false) return } resultWX["wx_uid"] = openId as AnyObject NetworkApi.share.post(param: resultWX, url: .authorize, handler: { (result) in failure("\(String(describing: result["status"] as? Int))") guard let status = result["status"] as? Int, let data = result["data"] as? [String:AnyObject], let user_id = data["user_id"] as? String, status == 200 else { callback(false) return } SharedUserInfo.userId = user_id if let sex = resultWX["sex"] as? Int { SharedUserInfo.sex = "\(sex)" } if let country = resultWX["country"] as? String { SharedUserInfo.country = country } if let nickname = resultWX["nickname"] as? String { SharedUserInfo.name = nickname } if let headimgurl = resultWX["headimgurl"] as? String { SharedUserInfo.photoPath = headimgurl } if let province = resultWX["province"] as? String { SharedUserInfo.province = province } if let city = resultWX["city"] as? String { SharedUserInfo.city = city } if let username = result["username"] as? String { SharedUserInfo.userName = username } SharedUserInfo.synchronize() callback(true) }).failure(handler: { (_) in failure("error") callback(false) }) } #endif } // MARK: WeChatLogin typealias WXLoginCallback = (_ result: [String : AnyObject]?, _ error: NSError?) -> Void var wxLoginJumpFinishCallback: WXLoginCallback? var wxLoginFinishCallback: WXLoginCallback? func LoginWithWeChat(_ callback : @escaping WXLoginCallback) { #if !((arch(i386) || arch(x86_64))) WXApi.registerApp(WXAppid) let request = SendAuthReq() request.scope = "snsapi_userinfo,snsapi_base" request.state = "skilogin" wxLoginFinishCallback = callback wxLoginJumpFinishCallback = { result, error in guard let code = result?["code"] as? String else { wxLoginFinishCallback?(nil, NSError(domain: "WXLoginError", code: -1, userInfo: nil)) wxLoginFinishCallback = nil return } GetWeChatToken(code, callback: { (result, error) in guard let token = result?["access_token"] as? String, let openId = result?["openid"] as? String else { wxLoginFinishCallback?(nil, error) wxLoginFinishCallback = nil return } GetWeChatUserInfo(token, openId: openId, callback: { (result, error) in defer { wxLoginFinishCallback = nil } guard let result = result, error == nil else { wxLoginFinishCallback?(nil, error) return } var resultAll = ["code": code, "access_token" : token, "openid" : openId] as [String : AnyObject] for key in result.keys { resultAll[key] = result[key] } wxLoginFinishCallback?(resultAll, nil) }) }) } WXApi.send(request) #endif } func GetWeChatToken(_ code: String, callback : @escaping WXLoginCallback) { let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=\(WXAppid)&secret=\(WXSecret)&code=\(code)&grant_type=authorization_code" NetworkApi.share.get(param: nil, url: url){ (res) in callback(res, nil) }.failure { (response) in callback(nil, nil) } } func GetWeChatUserInfo(_ token: String, openId: String, callback : @escaping WXLoginCallback) { let url = "https://api.weixin.qq.com/sns/userinfo?access_token=\(token)&openid=\(openId)&lang=zh_CN" NetworkApi.share.get(param: nil, url: url) { (res) in callback(res, nil) }.failure { (response) in callback(nil, nil) } }