pod 'WechatKit' 安装Carthage
github "starboychina/WechatKit" 设置URL scheme
在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你在微信开放平台,注册的应用程序id
IOS9以后 需要添加weixin到白名单(如图)
或以源代码方式打开info.plist, 并添加以下内容.
<key>LSApplicationQueriesSchemes</key> <array> <string>wechat</string> <string>weixin</string> </array>
AppDelegate的handleOpenURL和openURL方法:
在AppDelegate.swift中添加import WechatKit
func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool { return self.application(application, openURL: url, sourceApplication: nil, annotation: []) } func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { return WechatManager.sharedInstance.handleOpenURL(url) // 如需要使用其他第三方可以 使用 || 连接 其他第三方库的handleOpenURL // return WechatManager.sharedInstance.handleOpenURL(url) || TencentOAuth.HandleOpenURL(url) || WeiboSDK.handleOpenURL(url, delegate: SinaWeiboManager.sharedInstance) ...... }
WechatManager.appid = "微信开放平台,注册的应用程序id" WechatManager.appSecret = "微信开放平台,注册的应用程序Secret"
WechatManager.sharedInstance.isInstalled()
使用微信登录
默认会记住openid,以及access_token,在token还在有效期时,调用checkAuth则不会打开微信客户端,直接使用token和微信服务器获取认证信息
WechatManager.sharedInstance.checkAuth { result in switch result { case .Failure(let errCode)://登录失败 print(errCode) case .Success(let value)://登录成功 value为([String: String]) 微信返回的openid access_token 以及 refresh_token print(value) } }
WechatManager.sharedInstance.getUserInfo { result in switch result { case .Failure(let errCode)://获取失败 print(errCode) case .Success(let value)://获取成功 value为([String: String]) 微信用户基本信息 print(value) } }
退出登录
由于默认会记住openid,以及access_token,如需要切换用户则需要退出登录.
WechatManager.sharedInstance.logout()
WechatManager.sharedInstance.shareDelegate = self /** 分享 - parameter scence: 请求发送场景 - parameter image: 消息缩略图 - parameter title: 标题 - parameter description: 描述内容 - parameter url: 地址 - parameter extInfo: app分享信息(点击分享内容返回程序时,会传给WechatManagerShareDelegate.showMessage(message: String) */ WechatManager.sharedInstance.share(scence: WXScene, image: UIImage?, title: String, description: String, url: String? = default, extInfo: String? = default)
分享Delegation
//app分享后 点击分享返回时调用 func showMessage(message: String)