iOS微信第三方登录
1.下载SDK包,然后拖入项目中
2.导入对应的库
3.在Xcode中,填写你所注册的微信应用程序id(如下图所示),此步为配置应用间的跳转
4.就说明没有针对iOS9 增加白名单。在info.plist文件中加入 LSApplicationQueriesSchemes (只写item0,item1).
#import "WXApi.h"
@interface LoginViewController ()<WXApiDelegate>
- (void)viewDidLoad {
[superviewDidLoad];
[[NSNotificationCenterdefaultCenter] addObserver:self
selector:@selector(WeiXinRegisterAndLogin)
name:@"weixin"
object:nil];
}
- (IBAction)weixinButtonClick:(id)sender {
if ([WXApiisWXAppInstalled]) {//判断手机上是否有微信
if ([WXApiisWXAppSupportApi]) {//判断当前的微信版本是否支持注册登录
//构造SendAuthReq结构体,
SendAuthReq *req = [[SendAuthReqalloc] init];
req.scope =@"snsapi_message,snsapi_userinfo,snsapi_friend,snsapi_contact";
req.state =@"wechat";
req.openID=weixinAppid;
[WXApisendReq:req];
}else{
UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"温馨提示"message:@"当前微信版本过低,请先升级"preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *actionConfirm = [UIAlertActionactionWithTitle:@"确定"style:UIAlertActionStyleDefaulthandler:nil];
[alert addAction:actionConfirm];
[selfpresentViewController:alertanimated:YEScompletion:nil];
}
}else{
[self.weixinButtonsetHidden:YES];
UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"温馨提示"message:@"请先安装微信客户端"preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *actionConfirm = [UIAlertActionactionWithTitle:@"确定"style:UIAlertActionStyleDefaulthandler:nil];
[alert addAction:actionConfirm];
[selfpresentViewController:alertanimated:YEScompletion:nil];
}
}
// 微信注册登录功能
- (void)WeiXinRegisterAndLogin {
//下面是我的注册登录功能,对大家无用。
AFHTTPSessionManager *manager = [AFHTTPSessionManagermanager];
manager.requestSerializer=[AFJSONRequestSerializerserializer];
[manager POST:urlparameters:parameters progress:nilsuccess:^(NSURLSessionTask *task,id responseObject) {
NSString *success=[responseObjectobjectForKey:@"status"];
if ([successisEqualToString:@"success"]) {
NSLog(@"register send success!");
NSString *userUrl;
[selfgetResponse:userUrl :delegate.nickname :delegate.nickname];
}elseif ([success isEqualToString:@"exist"]){
NSString *userUrl;
[selfgetResponse:userUrl :delegate.nickname :delegate.nickname];
}else{
NSLog(@"注册失败");
}
} failure:^(NSURLSessionTask *operation,NSError *error) {
NSLog(@"Error: %@", error);
}];
}
代码2:单例界面
#import "WXApi.h"
@interface AppDelegate :UIResponder <UIApplicationDelegate,WXApiDelegate>
@property (strong,nonatomic) NSString *access_token;
@property (strong,nonatomic) NSString *openid;
@property (strong,nonatomic) NSString *nickname;// 用户昵称
@property (strong,nonatomic) NSString *headimgurl;// 用户头像地址
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//微信注册
[WXApiregisterApp:weixinAppidwithDescription:@"wechat"];
//向微信注册支持的文件类型
UInt64 typeFlag =MMAPP_SUPPORT_TEXT | MMAPP_SUPPORT_PICTURE | MMAPP_SUPPORT_LOCATION | MMAPP_SUPPORT_VIDEO |MMAPP_SUPPORT_AUDIO |MMAPP_SUPPORT_WEBPAGE | MMAPP_SUPPORT_DOC | MMAPP_SUPPORT_DOCX |MMAPP_SUPPORT_PPT | MMAPP_SUPPORT_PPTX | MMAPP_SUPPORT_XLS |MMAPP_SUPPORT_XLSX | MMAPP_SUPPORT_PDF;
[WXApiregisterAppSupportContentFlag:typeFlag];
returnYES;
}
#pragma mark-微信重写的方法,微信确认登录后返回调用的方法
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url sourceApplication:(nullableNSString *)sourceApplication annotation:(nonnullid)annotation{
return [WXApihandleOpenURL:url delegate:self];
}
#pragma mark-WXApiDelegate
-(void)onResp:(BaseResp *)resp{
SendAuthResp *aresp = (SendAuthResp *)resp;
if (aresp.errCode ==0) { //用户同意
// 获取access_token
// 格式:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
NSString *url =[NSStringstringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",weixinAppid,weixinSecret, aresp.code];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
NSURL *zoneUrl = [NSURLURLWithString:url];
NSString *zoneStr = [NSStringstringWithContentsOfURL:zoneUrlencoding:NSUTF8StringEncodingerror:nil];
NSData *data = [zoneStrdataUsingEncoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
if (data) {
NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableContainerserror:nil];
_openid = [dicobjectForKey:@"openid"];// 初始化
_access_token = [dicobjectForKey:@"access_token"];
NSLog(@"dic = %@", dic);
[selfgetUserInfo]; //获取用户信息
}
});
});
} elseif (aresp.errCode == -2) {
NSLog(@"用户取消登录");
} elseif (aresp.errCode == -4) {
NSLog(@"用户拒绝登录");
} else {
NSLog(@"errCode = %d", aresp.errCode);
NSLog(@"code = %@", aresp.code);
}
}
// 获取用户信息
- (void)getUserInfo {
NSString *url = [NSStringstringWithFormat:@"https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@",self.access_token,self.openid];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
NSURL *zoneUrl = [NSURLURLWithString:url];
NSString *zoneStr = [NSStringstringWithContentsOfURL:zoneUrlencoding:NSUTF8StringEncodingerror:nil];
NSData *data = [zoneStrdataUsingEncoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
if (data) {
NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableContainerserror:nil];
NSLog(@"dic============%@",dic);
self.headimgurl = [dicobjectForKey:@"headimgurl"];// 传递头像地址
self.nickname = [dicobjectForKey:@"nickname"];// 传递昵称
[[NSNotificationCenterdefaultCenter] postNotificationName:@"weixin"object:nil];// 发送通知
}
});
});
}
如果还有不知道通知中心的请到我另一篇博客里学习下:
iOS微信第三方登录相关推荐
- iOS微信第三方登录实现
iOS微信第三方登录实现 字数2824 阅读7603 评论19 喜欢46 注意:代码自己动手写,不要复制! 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信O ...
- iOS 微信 第三方登录实现
这篇文章原blog写得很好,排版也很好,之所以转载,完全是为了做个记录. 注意:代码自己动手写,不要复制! GitHub 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标 ...
- iOS微信授权登录集成
iOS微信授权登录集成 iOS微信授权登录集成,具体的过程参考官方的文档 微信集成官方Demo地址: iOS资源下载 不错的文章: iOS微信登录集成 iOS 微信第三方登录的简单实现 准备工作 1. ...
- iOS实现微信第三方登录
一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥 ...
- apicloud——微信第三方登录、apple登录
apicloud中微信第三方登录的问题 混合开发移动应用很火啊现在,多数公司都要求是必备技能,或者加分技能,所以学习来了 如下是作为前端工作者应该了解的内容,更加详细的前往官方示例 *** 结合api ...
- 微信第三方登录(PC网站、APP、移动网页)
最近搞微信第三方登录,搞蒙圈了. 我们的业务有两个场景需要使用微信第三方登录: 1.APP 第三方登录 2.H5网页第三方登录,具体流程:用户微信端收到一个二维码--->扫码后同意微信授权--& ...
- 微信第三方登录 -- (PC端+移动端)
微信第三方登录 -- (PC端+移动端) 一.前言 一. 什么是第三方登录 所谓的第三方登录,是说基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能.而这里的第三方平台,一般 ...
- php手机注册和微信登录统一,微信第三方登录账户统一的问题
微信公众号的 open_id和PC上的微信第三方登录 open_id 是一致的吗? 按照微信公众平台的文档 open_id应该是针对当前账户或者说是应用的,换句话说不同账号和应该应该是不一样的,那么如 ...
- 微信第三方登录测试时报Scope参数错误或没有Scope权限解决方法
微信第三方登录测试时报Scope参数错误或没有Scope权限解决方法 参考文章: (1)微信第三方登录测试时报Scope参数错误或没有Scope权限解决方法 (2)https://www.cnblog ...
最新文章
- oracle加as报错,【Oracle】-【sqlplus / as sysdba登录报错问题】-新用
- leetcode算法题--猜数字大小 II★★
- css设置input框长度_干货极致分享浅谈CSS属性,有趣的盒模型。网友:哎呦不错哦!...
- 一名全栈工程师的必备“百宝箱”
- 06 | 链表(上):如何实现LRU缓存淘汰算法?
- 团队-象棋游戏-成员简介及分工
- java 合成mp3_java如何把文本合成音频格式(MP3)
- java ascii码转字符_一文让你读懂JAVA.IO、字符编码、
- python excel案例导入jira_用Python脚本批量添加JIRA用户,python,jira
- python3 collections模块_python的Collections 模块
- 直接下载Google Play上APP的安装包
- 32款图片处理软件介绍
- Ubuntu 16.04 安装opencv3及其扩展模块
- 笔记本电脑双显卡怎么切换独立显卡的方法
- html id 命名,html类,id规范命名
- 单亲家庭父子的理财通信
- 使用transition实现图片轮播效果
- Java并发编程一线程池简介
- 前端多页面的代码压缩和混淆
- 新增A股热门概念行情—股票数据远程下载服务升级
热门文章
- linux(ubuntu 14.04 lubuntu14.04)下 搜狗拼音法安装后无法运行的解决方法
- [ubuntu14.04 amd64 ]搜狗拼音輸入法安裝
- 一名阿里安全一线AI算法工程师的“三观”
- 线程分离属性,线程取消(状态,类型),线程取消例程函数
- SpringBoot热启动
- 运用for 语句来计算 从1加到10的用法 C++
- facebook修改权限_如何在Facebook上更改小组的隐私
- 页面还未加载完成显示loading
- “产教融合,共享生态” CIE 2017中国IT教育博鳌论坛圆满召开
- 基于51单片机的简易交通灯仿真代码讲解