您的位置:首页 > 移动开发 > 微信开发

iOS 微信第三方登录

2015-08-30 19:43 579 查看
折腾了好几天,总算把 iOS 的微信第三方登录做出来了!虽然不难,但对初学者来说还是遇到了一些没接触过的知识。操作步骤官方文档(微信开放平台)写得还可以,这里不再赘述,只说一些知识点和需要注意的地方。

Demo 下载

没图没真相!先上效果图:

首页显示:



获取权限页面:



登录后的效果:



一些知识点

1. 类与类之间传递数据

刚开始的困难是不知道如何在类与类之间传递数据,后来在百度知道找到了方法,网址 http://zhidao.baidu.com/link?url=rgc9KJOqPqhS1N0x02eXxeQtN_Sy_ZZIY0QlI4Sl0cChwel080d43TFn3npIB7arYxcbsCsVTRyER2TmFrmioa

这里主要是 AppDelegate 和 ViewController 之间传递数据。

AppDelegate.m 中代码:

[code]AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appdelegate.headimgurl = [dic objectForKey:@"headimgurl"]; // 传递头像地址
appdelegate.nickname = [dic objectForKey:@"nickname"]; // 传递昵称


ViewController.m 中代码:

[code]AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *str = appdelegate.nickname; // 接收昵称
NSLog(@"display.nickname = %@", str);
[_nickname setText:str];

NSString *url = appdelegate.headimgurl;
NSLog(@"display.url = %@", url); // 接收头像网址
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
self.imageView.image = image;


2. 通知 NSNotification

数据能传递了,但什么时候调用并显示是个问题。在 ViewController 和 AppDelegate 的生命周期中都进行了测试,结果都不行。后来看到有人说用通知 NSNotification, 测试后果然可以!

通知其实很简单,只需一方发送,另一方接收之后执行所需操作即可。

AppDelegate.m 发送通知代码:

[code][[NSNotificationCenter defaultCenter] postNotificationName:@"Note" object:nil]; // 发送通知


ViewController.m 接收通知代码:

[code]// 添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(display) name:@"Note" object:nil];


注意:发送和接收通知的名字要一致!

关于 NSNotification, 这里有个小 Demo 非常不错!简洁明了!下载地址 http://download.csdn.net/detail/jk199054/4077865

注意事项

1. 微信客户端

真机调试,需要安装微信客户端。

2. 添加 URL Types

一定不要忘了在项目的 info 中添加 URL Types, 否则不能获取权限(自己不止一次忘记添加……)



3. Copy items if needed

刚开始不太理解,后来才知道是把文件复制到工程里面。这个很重要!

注:本人用的 Xcode 版本为 6.4。

运行项目可能会出现以下错误和警告:



此时,删除 WeChatSDK, 再重新拖进去一次即可。注意拖入的时候要勾选 “Copy items if needed” 选项,如图:



主要参考资料:

1. iOS接入指南

2. 移动应用微信登录开发指南

3. 基于第三方微信授权登录的iOS代码分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: