iOS微信授权登录集成
iOS微信授权登录集成
iOS微信授权登录集成,具体的过程参考官方的文档
微信集成官方Demo地址: iOS资源下载
不错的文章:
- iOS微信登录集成
- iOS 微信第三方登录的简单实现
准备工作
1.向微信注册你的应用程序id
开发者在微信开发平台,开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发
2.下载载微信终端SDK文件
可在 iOS资源下载处下载
3.添加依赖的库
- SystemConfiguration.framework,
- libz.dylib
- libsqlite3.0.dylib
- libc++.dylib
- Security.framework
- CoreTelephony.framework
- CFNetwork.framework
4.添加URL Type
选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id
5.添加URL Schemes白名单
在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin
集成
集成的代码可参考官方的Demo,官方的Demo将API进行了进一步的封装
1.要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id
在 AppDelegate
的 didFinishLaunchingWithOptions
函数中向微信注册id
//向微信注册
[WXApi registerApp:@"wxd930ea5d5a258f4f" enableMTA:YES];
2.重写AppDelegate
的handleOpenURL
和openURL
方法
官方Demo实现的效果如下:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
这2个方法在文档中是这样解释的:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url NS_DEPRECATED_IOS(2_0, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;
表示都已废弃,并且推荐使用如下的方法,iOS9.0以后有效:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0); // no equiv. notification. return NO if the application can't open for some reason
当用户通过其它应用启动本应用时,会回调这个方法,
url
参数是其它应用调用openURL:
方法时传过来的
上面的3个方法作用其实都是一样的,只是参数不同而已,函数的返回值是BOOL
官方文档的解释是:
YES if the delegate successfully handled the request or NO if the attempt to open the URL resource failed.
如果代理成功的处理了请求,则返回YES,如果打开URL资源失败了,则返回NO
对于这种URL Schemes调用,可参考:
- IOS的软件之间的调用(URL Schemes)
- iOS中的URL Scheme
3.向微信请求授权
官方Demo对请求进行了封装,如下:
//微信授权登录
- (void)sendAuthRequest {[WXApiRequestHandler sendAuthRequestScope: kAuthScopeState:kAuthStateOpenID:kAuthOpenIDInViewController:self];
}
该方法其内部实现为:
+ (BOOL)sendAuthRequestScope:(NSString *)scopeState:(NSString *)stateOpenID:(NSString *)openIDInViewController:(UIViewController *)viewController {SendAuthReq* req = [[SendAuthReq alloc] init];req.scope = scope; // @"post_timeline,sns"req.state = state;req.openID = openID;return [WXApi sendAuthReq:reqviewController:viewControllerdelegate:[WXApiManager sharedManager]];
}
创建了SendAuthReq
对象,其:
- scope - 必须,应用授权作用域,如获取用户个人信息则填写
snsapi_userinfo
- state - 非必须,用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
- appid - 必须,应用唯一标识,在微信开放平台提交应用审核通过后获得
参考移动应用微信登录开发指南
第三方向微信终端发送一个SendAuthReq
消息结构,如[WXApi sendReq:req];
,可拉起微信打开授权登录页:
用户点击授权后,微信客户端会被拉起,跳转至授权界面,用户在该界面点击允许或取消,SDK通过SendAuth
的Resp
返回数据给调用方
在官方的Demo中,WXApiManager
中实现了WXApiDelegate
的- (void)onResp:(BaseResp *)resp
方法和- (void)onReq:(BaseReq *)req
方法
在控制器中的managerDidRecvAuthResponse:
方法处理响应
- (void)managerDidRecvAuthResponse:(SendAuthResp *)response {NSString *strTitle = [NSString stringWithFormat:@"Auth结果"];NSString *strMsg = [NSString stringWithFormat:@"code:%@,state:%@,errcode:%d", response.code, response.state, response.errCode];[UIAlertView showWithTitle:strTitle message:strMsg sure:nil];
}
返回的数据,解释如下:
获取到code
后,就可以通过code获取access_token
和openid
,然后通过access_token
和openid
就可以获取用户个人信息了,这是在服务端做处理的,具体可参考移动应用微信登录开发指南
其它
pod集成微信先关可以参考:YTThirdPlatformManager
iOS微信授权登录集成相关推荐
- ios微信登录不上服务器,iOS微信授权登录
首先需要确保你的App应用在微信开发平台上注册创建并获得对应的接口,对应登录.支付等功能还涉及付费,具体申请流程就不再这里说了.到开放平台->管理中心->移动应用->查看应用,确认你 ...
- iOS微信授权登录中Universal Link(通用链接)的配置 ,解决ios13,ios14微信支付不走回调问题
这里写自定义目录标题 简介 Unuversal Links介绍 配置Unuversal Links 1.苹果开发者账号打开配置 2.XCode工程配置 3.配置JSON文件 4.后台服务器配置 5.微 ...
- IOS实现微信授权登录
IOS实现微信授权登录 微信是一个在开发中经常会使用到的平台,比如微信登录.授权.支付.分享.今天我们来看看如何在自己的应用里面集成微信授权. 1.微信授权的定义 微信OAuth2.0授权登录让微信用 ...
- .net core identity集成微信授权登录
最快的方式是直接nuget安装AspNetCore.Authentication.WeChat包. 想要知道是如何实现的,可以看下面github上面的源码. 源码在这里:https://github. ...
- html5+ mui框架 微信授权登录跳出手机号码登录方式
2019独角兽企业重金招聘Python工程师标准>>> 在HBuilder真机运行微信授权登录成功,但是使用ios离线集成后,点击微信授权登录,会跳出微信手机号码登录方式(会让你填入 ...
- html5+ mui框架 微信授权登录后跳回app无任何回调事件
2019独角兽企业重金招聘Python工程师标准>>> 微信授权登录可以调起微信,但是在微信上点击确认登陆后跳回app,但是之后无任何回掉事件. 问题原因: 1 因为我在集成Face ...
- html5+ mui框架 微信授权登录无响应,不回跳APP
2019独角兽企业重金招聘Python工程师标准>>> 微信授权登录可以调起微信,但是在微信上点击确认登陆后无响应,不跳回到APP. 问题解决方法: 1. 参考文章做排除:http: ...
- iOS微信第三方登录实现
iOS微信第三方登录实现 字数2824 阅读7603 评论19 喜欢46 注意:代码自己动手写,不要复制! 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信O ...
- android友盟微信授权登录清除,【转载】Android友盟SDK微信授权登录接入
微信授权登录接入需要先到微信开放平台申请好应用的APPID,交纳300大洋费用得到授权登录权限后才能使用,此处不再赘述. 接入的两种方式 -- 微信SDK接入:使用微信官方SDK接入,需要分" ...
最新文章
- idea 快速导入实现父类方法_教你快速吸引精准粉丝实现流量变现的方法
- python的数字转汉字金额的不完善代码
- Excel 做正态分布曲线
- (转载)java工程师15本必读书籍推荐
- sessionStorage细节
- hibernate--
- python调用菜单响应事件_tkinter菜单能发送调用它们的事件吗?
- yum更换国内源、yum下载rpm包、源码包安装
- python3生成随机数_python3实现随机数
- python零基础学难吗_零基础学习Python难吗?要怎么学Python才是最有效的?
- prometheus 筛选不同的cpu核心
- 101.对称二叉树(力扣leetcode) 博主可答疑该问题
- 渗透测试-内网信息收集
- autojs之提取图片中的红色文字(通过找边界进行裁剪)
- 计算机系统优化的方法.,20种优化电脑开机速度方法!
- 计算机公式除,Excel公式除法怎么用?教你四种使用方法
- html中的==$0是什么意思
- 基于JAVA宠物托管系统计算机毕业设计源码+系统+lw文档+部署
- 现在怎样做自媒体赚钱?
- 微信小程序订阅消息定时发送消息