iOS微信登录功能的实现
2015-12-28 11:53
766 查看
iOS应用接入微信的主要步骤,在微信开放平台的文档已经讲得很清楚了,按照微信官方的文档(iOS接入指南、移动应用微信登录开发指南)一步一步去做就行了,我就不赘述了,这里主要讲一下代码中几个需要注意的地方。
最新的WeChatSDK_1.5支持在未安装微信情况下Auth,检测到设备没有安装微信时,会弹出一个“输入与微信绑定的手机号”的界面:
所以.h文件要声明微信的delegate,并在.m文件将delegate设为self:
.m文件完整代码如下:
1) .h文件声明delegate
2) 在didFinishLaunchingWithOptions 函数中向微信注册id:
3) 重写AppDelegate的handleOpenURL和openURL方法:
有时候handleOpenURL和openURL方法可能会处理一些其它的东西,不能直接像上面一样重写时,就需要做个判断了:
1) WeChatLoginViewController的viewDidload里注册self为观察者:
收到通知后执行的方法:
2) AppDelegate里获取code后发送通知:
2) 按下(IBAction)weChatLogin按钮,你的app向微信发送请求。AppDelegate使用handleOpenURL和openURL方法跳转到微信;
3) 获取到code后AppDelegate发送通知并传递code;
4) WeChatLoginViewController收到通知及传递的code后,换取access_token并执行登录等相关操作。
以上就是微信登录的大致流程了,还有很多细节(如获取微信个人信息、刷新access_token等)可以查看微信的Api文档。
1. 使用微信登录功能的ViewController
最新的WeChatSDK_1.5支持在未安装微信情况下Auth,检测到设备没有安装微信时,会弹出一个“输入与微信绑定的手机号”的界面: 所以.h文件要声明微信的delegate,并在.m文件将delegate设为self:
[code]@interface WeChatLoginViewController : UIViewController <WXApiDelegate>
.m文件完整代码如下:
[code]#pragma mark - WeChat login - (IBAction)weChatLogin:(UIButton *)sender { [self sendAuthRequest]; } - (void)sendAuthRequest { //构造SendAuthReq结构体 SendAuthReq* req =[[SendAuthReq alloc ] init ]; req.scope = @"snsapi_userinfo" ; req.state = @"0123" ; //第三方向微信终端发送一个SendAuthReq消息结构 [WXApi sendAuthReq:req viewController:self delegate:self]; }
2. AppDelegate
微信登录需要在你的应用和微信之间跳转,所以必须借助AppDelegate来实现。AppDelegate文件需要做的事情有:1) .h文件声明delegate
2) 在didFinishLaunchingWithOptions 函数中向微信注册id:
3) 重写AppDelegate的handleOpenURL和openURL方法:
有时候handleOpenURL和openURL方法可能会处理一些其它的东西,不能直接像上面一样重写时,就需要做个判断了:
[code] // wechat login delegate if ([sourceApplication isEqualToString:@"com.tencent.xin"]) { return [WXApi handleOpenURL:url delegate:self]; }
3. 获取code后将code传回WeChatLoginViewController,可以用notification的方式来实现
1) WeChatLoginViewController的viewDidload里注册self为观察者:[code][[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getWeChatLoginCode:) name:@"WeChatLoginCode" object:nil];
收到通知后执行的方法:
[code]- (void)getWeChatLoginCode:(NSNotification *)notification { NSString *weChatCode = [[notification userInfo] objectForKey:@"code"]; /* 使用获取的code换取access_token,并执行登录的操作 */ }
2) AppDelegate里获取code后发送通知:
[code]- (void)onResp:(BaseReq *)resp { SendAuthResp *aresp = (SendAuthResp *)resp; if (aresp.errCode== 0) { NSString *code = aresp.code; NSDictionary *dictionary = @{@"code":code}; [[NSNotificationCenter defaultCenter] postNotificationName:@"WeChatLoginCode" object:self userInfo:dictionary]; } }
微信登录的整体流程:
1) app启动时向微信终端注册你的app id;2) 按下(IBAction)weChatLogin按钮,你的app向微信发送请求。AppDelegate使用handleOpenURL和openURL方法跳转到微信;
3) 获取到code后AppDelegate发送通知并传递code;
4) WeChatLoginViewController收到通知及传递的code后,换取access_token并执行登录等相关操作。
以上就是微信登录的大致流程了,还有很多细节(如获取微信个人信息、刷新access_token等)可以查看微信的Api文档。
相关文章推荐
- Andoird无法调用微信支付原因
- Title_微信开放平台分账功能实战(Java版)
- 微信公众号 发送图文消息
- 青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 5(添加微信支持)
- 【前端】使用weinre对手机、微信浏览器页面调试
- 企业微信号如何运营:从 0 到 100 万粉丝,他们只用了这 8 步
- [简单实用系列] 微信第三方登录
- 二十一:微信公众帐号开发符号表情的发送上
- 二十二:微信公众帐号开发-符号表情的发送下
- 我的微信
- C#-MVC开发微信应用(3)--文本消息和图文消息的应答
- 微信支付注意事项
- Android调用微信登陆、分享、支付
- 微信JS接口
- 微信公众号开发---上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing
- 仿微信聊天界面点击底部+图标弹出相应选项
- Android调用微信登陆、分享、支付
- 每次调起微信JSAPI报错或支付失败
- 微信内网页某些安卓手机不能上传图片文件的问题(1)
- Cacti微信企业号图文报警