Commit 53b0740b authored by pete谢兆麟's avatar pete谢兆麟

微信第三方登录客户端逻辑

parent e9298c1b
......@@ -75,6 +75,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate {
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
return WXApi.handleOpenUniversalLink(userActivity, delegate: self)
}
func onResp(_ resp: BaseResp) {
if resp.isKind(of: SendAuthResp.self) {
let res = resp as? SendAuthResp
if res?.state == "wechat_sdk_demo_test" {
YHShareManager.shared.getWechatAccessToken(code: res!.code!)
}
}
}
}
......
......@@ -233,7 +233,7 @@ class YHMyDocumentsDetailViewController: YHBaseViewController {
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.alpha = 0
button.alpha = 0
button.addTarget(self, action: #selector(submit), for: .touchUpInside)
return button
}()
......
......@@ -7,14 +7,88 @@
//
import UIKit
import Alamofire
class YHShareManager: NSObject {
static let shared = YHShareManager()
var scene: WXScene = WXSceneSession
}
extension YHShareManager {
//拉起微信第三方登录
func sendLogin() {
guard WXApi.isWXAppInstalled() else {
YHHUD.flash(message: "拉起微信失败")
return
}
let req = SendAuthReq()
req.scope = "snsapi_userinfo"
req.state = "wechat_sdk_demo_test"
WXApi.send(req) { flag in
if !flag {
YHHUD.flash(message: "分享失败")
}
}
}
func getWechatAccessToken(code: String){
let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx06b21f3c7a5ba594&secret=37a83c778aacc0f7788466682ef70c4e&code=\(code)&grant_type=authorization_code"
var requestHeader = HTTPHeaders()
requestHeader.add(name:"Conatent-Type",value:"application/json")
requestHeader.add(name:"Accept",value:"application/json")
AF.sessionConfiguration.requestCachePolicy = .reloadIgnoringCacheData
AF.sessionConfiguration.timeoutIntervalForRequest = 20
let encoding = URLEncoding(destination: .queryString)
let httpRequest = AF.request(url, method: .get, parameters: nil, encoding:encoding, headers: requestHeader, interceptor: nil, requestModifier: nil)
httpRequest.responseString(completionHandler: { string in
#if DEBUG
printLog("\n网络请求已返回 string=\(string)")
#endif
let responseResult = string.result
var statusCode = string.response?.statusCode ?? 0
let errorResponseMsg = string.error?.localizedDescription ?? ""
let resultValue = string.value ?? ""
let serverDict = resultValue.toDictionary()
guard let access_token = serverDict["access_token"] as? String, let openid = serverDict["openid"] as? String else{
return
}
self.getWechatUserInfo(with: access_token, openId: openid)
})
}
func getWechatUserInfo(with access_token:String, openId:String) {
let url = "https://api.weixin.qq.com/sns/userinfo?access_token=\(access_token)&openid=\(openId)"
var requestHeader = HTTPHeaders()
requestHeader.add(name:"Conatent-Type",value:"application/json")
requestHeader.add(name:"Accept",value:"application/json")
AF.sessionConfiguration.requestCachePolicy = .reloadIgnoringCacheData
AF.sessionConfiguration.timeoutIntervalForRequest = 20
let encoding = URLEncoding(destination: .queryString)
let httpRequest = AF.request(url, method: .get, parameters: nil, encoding:encoding, headers: requestHeader, interceptor: nil, requestModifier: nil)
httpRequest.responseString(completionHandler: { string in
#if DEBUG
printLog("\n网络请求已返回 string=\(string)")
#endif
let responseResult = string.result
var statusCode = string.response?.statusCode ?? 0
let errorResponseMsg = string.error?.localizedDescription ?? ""
let resultValue = string.value ?? ""
let serverDict = resultValue.toDictionary()
guard let openid = serverDict["openid"] as? String, let nickname = serverDict["nickname"] as? String else{
return
}
// 获取到的用户信息json格式,可以拿来给服务端绑定用户信息
//`在这里绑定获取到的用户信息`
if let iso88591Data = nickname.data(using: .isoLatin1) {
if let utf8String = String(data: iso88591Data, encoding: .utf8) {
print(utf8String) // 这是转换为UTF-8后的字符串
}
}
})
}
func sendTextContect(_ text: String) {
guard WXApi.isWXAppInstalled() else {
YHHUD.flash(message: "拉起微信失败")
......
......@@ -181,6 +181,7 @@ class YHNetRequest: NSObject {
#if DEBUG
printLog("\n网络请求已返回 string=\(string)")
#endif
self.completeHandle(string: string)
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment