微信是一个在开发中经常会使用到的平台,比如微信登录、授权、支付、分享。今天我们来看看如何在自己的应用里面集成微信授权。

1、微信授权的定义
微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。
2、微信授权的步骤
第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
通过code参数加上AppID和AppSecret等,通过API换取access_token;
通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
3、准备工作
在做微信授权登录之前我们需要做一些准备工作。
具体的直接看微信开发者文档就可以了,地址如下:iOS接入指南
除了微信开发者文档中提到的几点,还有几个地方需要注意
3.1、更改plist文件如下
App Transport Security Setting设置
iOS9中新增App Transport Security(简称ATS)特性, 主要使到原来请求的时候用到的HTTP,都转向TLS1.2协议进行传输。这也意味着所有的HTTP协议都强制使用了HTTPS协议进行传输。需要在Info.plist新增一段用于控制ATS的配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
这样就可以允许HTTP传输了
4、微信授权第一步:获取code
我们假设在界面上有一个按钮,用户点击该按钮,就会发起微信授权操作。
那么代码如下:
-(IBAction)sendAuthRequest
{
//构造SendAuthReq结构体
SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ];
req.scope = @"snsapi_userinfo" ;
req.state = WXPacket_State ;//用于在OnResp中判断是哪个应用向微信发起的授权,这里填写的会在OnResp里面被微信返回
//第三方向微信终端发送一个SendAuthReq消息结构
[WXApi sendReq:req];
}
4.1、参数说明
4.2、拉起微信授权页面
4.3、返回结果说明
5、微信授权第二步:通过code获取access_token,openid,unionid
获取第一步的code后,请求以下链接获取access_token,openid,unionid:
https://api.weixin.qq.com/sns/oauth2/access_token?
appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
通过上一步拉起微信授权页面,用户点击确认登录,成功之后,就会调用微信代理中的回调函数OnResp函数,我们可以在该函数里面获取access_token,openid,unionid
在AppDelegate.m文件中实现代码如下:
//微信代理方法
- (void)onResp:(BaseResp *)resp
{
SendAuthResp *aresp = (SendAuthResp *)resp;
if(aresp.errCode== 0 && [aresp.state isEqualToString:WXPacket_State])
{
NSString *code = aresp.code;
[self getWeiXinOpenId:code];
}
}
//通过code获取access_token,openid,unionid
- (void)getWeiXinOpenId:(NSString *)code{
NSString *url =[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",AppId,AppSerect,code];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *zoneUrl = [NSURL URLWithString:url];
NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
if (data){
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSString *openID = dic[@"openid"];
NSString *unionid = dic[@"unionid"];
}
});
});
}
5.1返回说明:
5.2、刷新access_token有效期
5.2.1、返回说明
6、微信授权第三步:通过access_token获取个人信息
6.1、接口说明
此接口用于获取用户个人信息。开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。请注意,在用户修改微信头像后,旧的微信头像URL将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常情况。
请求接口
http请求方式: GET
请求地址:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
参数和返回数据说明
以上所述是小编给大家介绍的IOS实现微信授权登录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# ios
# 微信授权登录
# iOS微信第三方登录实现
# IOS开发用户登录注册模块所遇到的问题
# vue+axios实现登录拦截的实例代码
# iOS QQ第三方登录实现
# iOS中关于Cookie验证登录状态
# iOS实现第三方微信登录方式实例解析(最新最全)
# iOS微信第三方登录实例
# iOS指纹登录(TouchID)集成方案详解
# iOS开发教程之登录与访客的逻辑实现
# 第三方
# 帐号
# 拉起
# 就会
# 可通过
# 个人信息
# 准备工作
# 需要注意
# 小编
# 就可以
# 自己的
# 的是
# 是一个
# 几个
# 文档
# 多个
# 将会
# 在此
# 上有
# 会在
相关文章:
如何在建站之星绑定自定义域名?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站主机数据库如何配置才能提升网站性能?
个人网站制作流程图片大全,个人网站如何注销?
建站之星24小时客服电话如何获取?
宝塔Windows建站如何避免显示默认IIS页面?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
h5网站制作工具有哪些,h5页面制作工具有哪些?
建站之星如何助力企业快速打造五合一网站?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
C#怎么创建控制台应用 C# Console App项目创建方法
代刷网站制作软件,别人代刷火车票靠谱吗?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
学校为何禁止电信移动建设网站?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
南京网站制作费用,南京远驱官方网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
制作网站外包平台,自动化接单网站有哪些?
如何通过wdcp面板快速创建网站?
如何将凡科建站内容保存为本地文件?
如何选择适配移动端的WAP自助建站平台?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
建设网站制作价格,怎样建立自己的公司网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
建站主机服务器选型指南与性能优化方案解析
建站之星代理费用多少?最新价格详情介绍
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何快速辨别茅台真假?关键步骤解析
自助网站制作软件,个人如何自助建网站?
如何在Golang中指定模块版本_使用go.mod控制版本号
网站网页制作专业公司,怎样制作自己的网页?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
制作表格网站有哪些,线上表格怎么弄?
北京企业网站设计制作公司,北京铁路集团官方网站?
网站制作员失业,怎样查看自己网站的注册者?
建站之星好吗?新手能否轻松上手建站?
如何通过FTP服务器快速搭建网站?
如何通过.red域名打造高辨识度品牌网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
建站之星代理商如何保障技术支持与售后服务?
建站之星多图banner生成与模板自定义指南
如何在云主机上快速搭建网站?
在线制作视频的网站有哪些,电脑如何制作视频短片?
建站之星伪静态规则如何正确配置?
*请认真填写需求信息,我们会在24小时内与您取得联系。