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

AppDelegatedidFinishLaunchingWithOptions 函数中向微信注册id

//向微信注册
[WXApi registerApp:@"wxd930ea5d5a258f4f" enableMTA:YES];

2.重写AppDelegatehandleOpenURLopenURL方法

官方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通过SendAuthResp返回数据给调用方

在官方的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_tokenopenid,然后通过access_tokenopenid就可以获取用户个人信息了,这是在服务端做处理的,具体可参考移动应用微信登录开发指南

其它

pod集成微信先关可以参考:YTThirdPlatformManager

iOS微信授权登录集成相关推荐

  1. ios微信登录不上服务器,iOS微信授权登录

    首先需要确保你的App应用在微信开发平台上注册创建并获得对应的接口,对应登录.支付等功能还涉及付费,具体申请流程就不再这里说了.到开放平台->管理中心->移动应用->查看应用,确认你 ...

  2. iOS微信授权登录中Universal Link(通用链接)的配置 ,解决ios13,ios14微信支付不走回调问题

    这里写自定义目录标题 简介 Unuversal Links介绍 配置Unuversal Links 1.苹果开发者账号打开配置 2.XCode工程配置 3.配置JSON文件 4.后台服务器配置 5.微 ...

  3. IOS实现微信授权登录

    IOS实现微信授权登录 微信是一个在开发中经常会使用到的平台,比如微信登录.授权.支付.分享.今天我们来看看如何在自己的应用里面集成微信授权. 1.微信授权的定义 微信OAuth2.0授权登录让微信用 ...

  4. .net core identity集成微信授权登录

    最快的方式是直接nuget安装AspNetCore.Authentication.WeChat包. 想要知道是如何实现的,可以看下面github上面的源码. 源码在这里:https://github. ...

  5. html5+ mui框架 微信授权登录跳出手机号码登录方式

    2019独角兽企业重金招聘Python工程师标准>>> 在HBuilder真机运行微信授权登录成功,但是使用ios离线集成后,点击微信授权登录,会跳出微信手机号码登录方式(会让你填入 ...

  6. html5+ mui框架 微信授权登录后跳回app无任何回调事件

    2019独角兽企业重金招聘Python工程师标准>>> 微信授权登录可以调起微信,但是在微信上点击确认登陆后跳回app,但是之后无任何回掉事件. 问题原因: 1 因为我在集成Face ...

  7. html5+ mui框架 微信授权登录无响应,不回跳APP

    2019独角兽企业重金招聘Python工程师标准>>> 微信授权登录可以调起微信,但是在微信上点击确认登陆后无响应,不跳回到APP. 问题解决方法: 1. 参考文章做排除:http: ...

  8. iOS微信第三方登录实现

    iOS微信第三方登录实现 字数2824 阅读7603 评论19 喜欢46 注意:代码自己动手写,不要复制! 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信O ...

  9. android友盟微信授权登录清除,【转载】Android友盟SDK微信授权登录接入

    微信授权登录接入需要先到微信开放平台申请好应用的APPID,交纳300大洋费用得到授权登录权限后才能使用,此处不再赘述. 接入的两种方式 -- 微信SDK接入:使用微信官方SDK接入,需要分" ...

最新文章

  1. idea 快速导入实现父类方法_教你快速吸引精准粉丝实现流量变现的方法
  2. python的数字转汉字金额的不完善代码
  3. Excel 做正态分布曲线
  4. (转载)java工程师15本必读书籍推荐
  5. sessionStorage细节
  6. hibernate--
  7. python调用菜单响应事件_tkinter菜单能发送调用它们的事件吗?
  8. yum更换国内源、yum下载rpm包、源码包安装
  9. python3生成随机数_python3实现随机数
  10. python零基础学难吗_零基础学习Python难吗?要怎么学Python才是最有效的?
  11. prometheus 筛选不同的cpu核心
  12. 101.对称二叉树(力扣leetcode) 博主可答疑该问题
  13. 渗透测试-内网信息收集
  14. autojs之提取图片中的红色文字(通过找边界进行裁剪)
  15. 计算机系统优化的方法.,20种优化电脑开机速度方法!
  16. 计算机公式除,Excel公式除法怎么用?教你四种使用方法
  17. html中的==$0是什么意思
  18. 基于JAVA宠物托管系统计算机毕业设计源码+系统+lw文档+部署
  19. 现在怎样做自媒体赚钱?
  20. 微信小程序订阅消息定时发送消息

热门文章

  1. 马克·安德森:创造互联网未来的人
  2. 初级、中级和高级开发人员的差距在哪里?
  3. PaddlePaddle领航团 OpenCV基础知识点总结
  4. Excel一个表内多个sheet分列操作
  5. 如何制作Windows11安装U盘
  6. 智慧文旅云平台建设,参照这个方案轻松搞定
  7. 2.45GHz微带天线PCB设计AD铺铜只显示边框不显示铜皮的解决办法
  8. 联盟链fabric区块链易于落地推广场景
  9. 宝藏级BI数据可视化功能|图表联动分析
  10. 单片机控制发光二极管的显示(2)