前言:

[1] iOS 微信登录注意事项

1、目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。2、对于Android应用,建议总是显示微信登录按钮,当用户手机没有安装微信客户端时,请引导用户下载安装微信客户端。3、对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已安装微信客户端(使用sdk中isWXAppInstalled函数 ),对未安装的用户隐藏微信登录按钮,只提供其他登录方式(比如手机号注册登录、游客登录等)。

[2] iOS 微信登录大致流程

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

[3] iOS 微信登录时序图

正文:

1.向微信注册你的应用程序id

请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。

2.下载微信终端SDK文件

SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个。
如选用手动集成,请前往“资源下载页”下载最新SDK包

3.搭建开发环境

3.1 通过CocoaPods集成

[1] 在XCode中建立你的工程。

[2] 在工程的Podfile里面添加以下代码:

pod 'WechatOpenSDK'

保存并执行pod install,然后用后缀为.xcworkspace的文件打开工程。

注意:

命令行下执行pod search WechatOpenSDK,如显示的WechatOpenSDK版本不是最新的,则先执行pod repo update操作更新本地repo的内容

[3] 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id(如下图所示)。

[4] 在你需要使 用微信终端API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议。

#import <UIKit/UIKit.h>
#import <WXApi.h>@interface AppDelegate : UIResponder <UIApplicationDelegate,WXApiDelegate>@property (strong, nonatomic) UIWindow *window;@end

3.2 手动集成

[1] 在XCode中建立你的工程。

[2] 将SDK文件中包含的 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件添加到你所建的工程中。

[3]微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework, libz.dylib, libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework。

[4] 在你的工程文件中选择Build Setting,在"Other Linker Flags"中加入"-Objc -all_load"。

[5] 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id(如下图所示)。

[6] 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin(如下图所示)。

[7] 在你需要使 用微信终端API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议。

#import <UIKit/UIKit.h>
#import "WXApi.h"@interface AppDelegate : UIResponder <UIApplicationDelegate,WXApiDelegate>@property (strong, nonatomic) UIWindow *window;@end

4.在代码中使用开发工具包

[1] 要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。(在 AppDelegate 的didFinishLaunchingWithOptions 函数中向微信注册id)。

[2] 重写AppDelegate的openURL方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{return [WXApi handleOpenURL:url delegate:self];
}

[3] 现在,你的程序要实现和微信终端交互的具体请求与回应,因此需要实现WXApiDelegate协议的方法:

-(void) onResp:(BaseResp*)resp{/*enum  WXErrCode {WXSuccess           = 0,    成功WXErrCodeCommon     = -1,  普通错误类型WXErrCodeUserCancel = -2,    用户点击取消并返回WXErrCodeSentFail   = -3,   发送失败WXErrCodeAuthDeny   = -4,    授权失败WXErrCodeUnsupport  = -5,   微信不支持};*/if ([resp isKindOfClass:[SendAuthResp class]]) {   //授权登录的类。if (resp.errCode == 0) {  //成功。SendAuthResp *resp2 = (SendAuthResp *)resp;[[NSNotificationCenter defaultCenter] postNotificationName:@"wxLogin" object:resp2.code];}else{ //失败SHOWHUDERR(@"授权失败")}}
}

5.在登录的类中发起授权登录的请求

- (void)weixinLogin{if ([WXApi isWXAppInstalled]) {SendAuthReq *req = [[SendAuthReq alloc] init];req.scope = @"snsapi_userinfo";req.state = @"123";[WXApi sendReq:req]}else{//把微信登录的按钮隐藏掉}
}

6.在接收到第四步中 WXApiDelegate 协议的方法中发出的成功通知后获得 code ,通过 code获取access_token

获取code后,请求以下链接获取access_token和openid:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

7.通过 access_token 和 openid 调用接口获取个人信息实现登录

http请求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

特别注意:

1、Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);
2、access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;
3、建议将Appsecret、用户数据(如access_token)放在后台服务端,在获得 code 将 code 发送给后台服务端,有后台来获取 access_token 和个人信息。

大功告成!

iOS开发最新最全微信第三方登录接入流程相关推荐

  1. (0013)iOS 开发之集成友盟第三方登录

    第三方登录的原理和流程 用户采用第三方登录的时候,用户会发送哪些信息到我的后台,后台会进行哪些比对操作?首次使用第三方登录和再次使用第三方登录时验证有哪些不同,后台如何保存用户的登录信息尼? 对于用户 ...

  2. 微信公众平台开发(31)微信第三方登录接口

    原文: http://www.cnblogs.com/imaker/p/5491433.html 第一步:获取AppID AppSecret(不做解释,自己去微信公众平台申请) 第二步:生成扫描二维码 ...

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

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

  4. 微信第三方登录接口开发

    微信登录接口开发须知 APP登录接口 PC网站登录接口 微信移动网页登录接口(又称微信公众号授权登录) 移动端非微信自带浏览不支持微信登录 微信移动网页登录接口(又称微信公众号授权登录) 先要与开放平 ...

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

    这篇文章原blog写得很好,排版也很好,之所以转载,完全是为了做个记录. 注意:代码自己动手写,不要复制! GitHub 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标 ...

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

    一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥 ...

  7. apicloud——微信第三方登录、apple登录

    apicloud中微信第三方登录的问题 混合开发移动应用很火啊现在,多数公司都要求是必备技能,或者加分技能,所以学习来了 如下是作为前端工作者应该了解的内容,更加详细的前往官方示例 *** 结合api ...

  8. 微信第三方登录 -- (PC端+移动端)

    微信第三方登录 -- (PC端+移动端) 一.前言 一. 什么是第三方登录 所谓的第三方登录,是说基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能.而这里的第三方平台,一般 ...

  9. php实例-微信第三方登录

    下面小编就为大家带来一篇微信第三方登录(原生)demo[必看篇].小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 在一家ecstore二开公司有一段时间了,公司希望往自己 ...

最新文章

  1. 列举一些RNN类模型的常见使用形式以及常见的应用
  2. Java堆和栈的一些区别。。。
  3. c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
  4. 线性规划之单纯形法(2)
  5. 排名前20的网页爬虫工具,超多干货
  6. C++实现剔除不能识别的非ASCIII、非中文字符
  7. 新款苹果电脑_苹果真牛!iPhone的软件,苹果电脑上也照样可用了
  8. Pycharm更改快速规整代码快捷键
  9. api网关选型_微服务 API 网关 APISIX 发布 0.5 版本,达到可用状态
  10. Cocos2d-x基础概念详情篇
  11. ElementUI:使input自动聚焦的两种方法
  12. 使用Redis单实例实现分布式锁
  13. Win7快速截屏的五种方法
  14. 如何在家自学编程成为一名程序员?
  15. 打开bat文件闪退以及‘java‘不是内部或外部命令,也不是可运行的程序或批处理文件【本人亲测解决方法】
  16. matlab教程电力电子视频,基于Matlab/Simulink的电力电子仿真演示教学
  17. 线上教学,师生“网上见”
  18. 【Python工具】Python实现一款支持各大平台的视频下载器 | 附源码
  19. 现在才发现:敏捷迭代的好处实在太多了
  20. win10打不开gpedit.msc的解决方法

热门文章

  1. Mybatis在Maven中的应用技巧
  2. windowsxp最新版本_雨林木风U盘装系统启动盘制作工具更新最新版9.0
  3. P94-好玩游戏的物品清单升级-列表到字典的函数
  4. 每天一个小Error
  5. Qt5学习之路及嵌入式开发教程1:信号槽例子
  6. 哈尔滨工业大学软件学院诚聘英才
  7. 软件测试的起源和发展、流程 笔记
  8. Spring框架的起源
  9. HTML5 Canvas编写五彩连珠(1):预览
  10. html5 自动矢量化,HTML5中地圖矢量化