当前位置: 首页 > news >正文

微信三方登录相关(Swift)

微信登录条件

1.微信开放平台注册并认证成功(每年300RMB)

2.相关应用的微信的APPID和secret

3. 遵循微信代理WXApiDelegate

使用处编写相关登录代码

 WXApi.registerApp("wxe7d57dc35de9c3c8")

         let req = SendAuthReq.init()

         req.scope = "snsapi_userinfo"

         req.state = "wulianwang"

         WXApi.send(req)

 

在回调方法中处理相关业务

func onResp(_ resp: BaseResp!) {

        print(resp.errCode)

        //errCode == 0时,请求access_token

        if resp.errCode == 0 {

            let pathStr = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=\(wxAPPID)&secret=\(secret)&code=\(resp.errCode)&grant_type=authorization_code"

            let url = URL.init(string: pathStr)

            let str = try! String.init(contentsOf: url!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))

            

            let data = str.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))

            

            DispatchQueue.main.async {

                if (data != nil){

                    let dic = try! JSONSerialization.jsonObject(with: data!, options: .mutableContainers)

                    /** 正确时返回的JSON格式入一下!!!

                     {

                     "access_token":"ACCESS_TOKEN",

                     "expires_in":7200,

                     "refresh_token":"REFRESH_TOKEN",

                     "openid":"OPENID",

                     "scope":"SCOPE",

                     "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"

                     }

                     */

                    print(dic)

                    

                    if (dic as! NSDictionary)["access_token"] == nil{

                        let alert = UIAlertController.init(title: "提示", message: str , preferredStyle: .alert)

                        let ok = UIAlertAction.init(title: "确定", style: .cancel, handler: nil)

                        

                        alert.addAction(ok)

                        

                        self.present(alert, animated: true, completion: nil)

                    }

                }

                

            }

        }

    }

  //注意:secret可能会报错,注意重置secret!!!

appDelegate中增加相关方法

 func application(_ application: UIApplication, handleOpen url: URL) -> Bool {

        return WXApi.handleOpen(url as URL!, delegate: self)

    }

转载于:https://my.oschina.net/wayzhu/blog/857765

相关文章:

  • 大数加法模板
  • System类
  • PyOdps 0.4版本发布,从一个故事说起
  • 电话面试总结
  • link visited hover actived顺序
  • Log4Net 在ASP.NET WebForm 和 MVC的全局配置
  • 也谈谈Unity的transform使用
  • 多个文本框录入,使用回车键替找Tab键
  • debian8 更新系统内核
  • 查询SQL存储过程创建时间
  • 利用反射——查看类的成员
  • 【码云周刊第 12 期】走过微软20年,埋头并发编程15年,如何减少代码的认知负荷?...
  • 直方图、基数、选择性、群集因子
  • Codeforces 771C:Bear and Tree Jumps
  • 胡适:一个最低限度的国学书目
  • Angular数据绑定机制
  • angular学习第一篇-----环境搭建
  • CentOS7 安装JDK
  • css布局,左右固定中间自适应实现
  • CSS居中完全指南——构建CSS居中决策树
  • echarts的各种常用效果展示
  • ES6语法详解(一)
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • webpack入门学习手记(二)
  • 反思总结然后整装待发
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端_面试
  • 入门级的git使用指北
  • 数组大概知多少
  • 学习JavaScript数据结构与算法 — 树
  • 应用生命周期终极 DevOps 工具包
  • 用Python写一份独特的元宵节祝福
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • #Z0458. 树的中心2
  • #Z2294. 打印树的直径
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (26)4.7 字符函数和字符串函数
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (十)c52学习之旅-定时器实验
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)http协议
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *上位机的定义
  • .CSS-hover 的解释
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 使用配置文件
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .pyc文件是什么?
  • // an array of int
  • @RequestMapping用法详解
  • [51nod1610]路径计数