|
//
// 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)
}
}
|