企业微信H5_身份验证,H5应用网页授权登录获取身份_h5auth-程序员宅基地

技术标签: 企业微信  获取用户信息  

一、调用流程

官网文档:https://developer.work.weixin.qq.com/document/path/91335

1. 企业微信OAuth2接入流程

在这里插入图片描述
我根据上图画的便于理解的可实施图
在这里插入图片描述

步骤如下->
①前端项目->前端项目检查自身是否登录,如果没有登录携带redirect_url调用->后端api获取企业微信授权登录链接
②后端api->返回生成redirect_ur及app_id等信息的企业微信oauth授权链接->前端项目
③前端项目->windows.location.href跳转->企业微信授权链接
④企业微信->企业微信授权,携带code回调redirect_url->前端项目
⑤前端项目->携带将state、code等调用->后端api接口获取用户信息等
⑥后端api->服务端通过code调用->企业微信获取用户信息
⑦后端api->返回token及用户信息->前端项目

2. 使用OAuth2前须知

重点阅读,比较重要
核心思想:就是调用之前需要配置可信任域名+端口,下面会进行演示。
在这里插入图片描述

3. 构造网页授权链接

这个链接一般为了安全,由前端触发请求后端构造网页授权链接(回调redirect_uri)

https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

在这里插入图片描述

  • 参数说明
    appid的取值和redirect_uri授权后重定向的回调链接地址,请使用urlencode对链接进行处理,这个比较重要
    在这里插入图片描述
4. 获取访问用户身份

通过后端后取的ACCESS_TOKEN的前端传递过来的code,调用“获取访问用户身份”请求地址即可
在这里插入图片描述

二、调试前准备
2.1. 配置域名映射
127.0.0.1 apitest.tobdev.com
127.0.0.1 test.tobdev.com

在这里插入图片描述

2.2. 跨域+域名请求

在这里插入图片描述

2.3. 设置可信任域名

登录管控台:https://work.weixin.qq.com/wework_admin/frame#apps
在这里插入图片描述
网页授权及JS-SDK
申请域名校验
在这里插入图片描述
在这里插入图片描述

2.4. 登录企微

建议使用PC端企业微信进行调试,手机调试也可以,如果是手机调试的话,请参考:
host配置及代理相关,H5应用如何本地及真机调试https://blog.csdn.net/weixin_40816738/article/details/122431390

2.5. 选择自建应用

选择企业内部自建应用
在这里插入图片描述

三、实战演练

步骤如下->

3.1. 前端编码触发后端api

①前端项目->前端项目检查自身是否登录,如果没有登录携带redirect_url调用->后端api获取企业微信授权登录链接

在这里插入图片描述

3.2. 后端构造授权链接

②后端api->返回生成redirect_ur及app_id等信息的企业微信oauth授权链接->前端项目
在这里插入图片描述

3.3. 请求授权链接

③前端项目->windows.location.href跳转->企业微信授权链接
在这里插入图片描述

3.4. 回调前端

④企业微信->企业微信授权,携带code回调redirect_url->前端项目
在这里插入图片描述

3.5. 携带code请求后端

⑤前端项目->携带将state、code等调用->后端api接口获取用户信息等
在这里插入图片描述

3.6. 请求企业微信,获取用户信息

这里给大家进行步骤拆解:
⑥后端api->服务端通过code调用->企业微信获取用户信息

  • 后端接收前端的code
    在这里插入图片描述
  • 后端携带corpId请求企业微信获取access_token

⑦后端api->返回token及用户信息->前端项目
在这里插入图片描述

  • 后端获取token其实需要2个参数(AccessTokenUrl(),corpId,agentSecret)这一步通过查询数据库的信息,最后拼接而成的
    在这里插入图片描述
  • 后端构造“获取访问用户身份”请求地址,调用企业微信即可
    在这里插入图片描述
  • 后端接收企业微信返回的用户信息,这里只是简要的用户信息,最重要的是userid,等会会携带userid获取用户的详细信息(后续会讲)
    在这里插入图片描述
  • 前端接收后端推送过来的用户信息进行展示
    在这里插入图片描述
四、代码讲解

步骤如下->

4.1. 前端编码触发后端api

①前端项目->前端项目检查自身是否登录,如果没有登录携带redirect_url调用->后端api获取企业微信授权登录链接

在这里插入图片描述
【H5应用OAuth授权登录】按钮
在这里插入图片描述
地址编码处理,官网文档有讲到
在这里插入图片描述
请求后端api
在这里插入图片描述
在这里插入图片描述

4.2. 后端构造授权链接

②后端api->返回生成redirect_ur及app_id等信息的企业微信oauth授权链接->前端项目
在这里插入图片描述
service组装网页授权连接
在这里插入图片描述

4.3. 请求授权链接

③前端项目->windows.location.href跳转->企业微信授权链接
在这里插入图片描述
在这里插入图片描述

4.4. 回调前端

④企业微信->企业微信授权,携带code回调redirect_url->前端项目
在这里插入图片描述
在这里插入图片描述

4.5. 携带code请求后端

⑤前端项目->携带将state、code等调用->后端api接口获取用户信息等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.6. 请求企业微信,获取用户信息

这里给大家进行步骤拆解:
⑥后端api->服务端通过code调用->企业微信获取用户信息

  • 后端接收前端的code
    在这里插入图片描述
  • 后端携带corpId请求企业微信获取access_token

⑦后端api->返回token及用户信息->前端项目
在这里插入图片描述

  • 后端获取token其实需要2个参数(AccessTokenUrl(),corpId,agentSecret)这一步通过查询数据库的信息,最后拼接而成的
    在这里插入图片描述
  • 后端构造“获取访问用户身份”请求地址,调用企业微信即可
    在这里插入图片描述
  • 后端接收企业微信返回的用户信息,这里只是简要的用户信息,最重要的是userid,等会会携带userid获取用户的详细信息(后续会讲)
    在这里插入图片描述
  • 前端接收后端推送过来的用户信息进行展示

在这里插入图片描述
用户信息

{
    
"errcode": 0,
"UserId": "ZeXin",
"DeviceId": "b4f2f8f9-6a51-4f1b-a927-2140b9253c17",
"errmsg": "ok",
"token": "tobdeveyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0b2JkZXYiLCJjb3JwX2lkIjoid3dlYTk4MjIwZmRjZDhhMzhkIiwiaWF0IjoxNjQ1OTMwMjYxLCJleHAiOjE2NDY1MzUwNjF9.NCfLR5fnYubuRnSDojXmV4BbTCVNw7Yu-IKZpywvhMQ"
}

在这里插入图片描述

在这里插入图片描述

五、源码分享
5.1. 后端源码

后端:https://gitee.com/gblfy/qywx-inner-java
在这里插入图片描述

5.2. 前端源码

前端:https://gitee.com/gblfy/qywx-vuejs
在这里插入图片描述//gitee.com/gblfy/qywx-vuejs)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40816738/article/details/123155437

智能推荐

spring-boot-starter-validation常用注解_spring-boot-starter-validation使用文档-程序员宅基地

文章浏览阅读631次,点赞18次,收藏16次。通过使用分组校验,你可以为同一个对象的不同操作设置不同的验证规则,这在复杂应用中非常有用。这种方法提高了代码的灵活性和可维护性。_spring-boot-starter-validation使用文档

word中插入高分辨率图片,并且保存为PDF图片仍然高清的方法_word保存为高清晰的pdf-程序员宅基地

文章浏览阅读5.5k次。https://blog.csdn.net/cjbct/article/details/62446380_word保存为高清晰的pdf

hadoop集群搭建(基于docker-compose)_bde2020/hadoop-程序员宅基地

文章浏览阅读4k次,点赞3次,收藏13次。1,创建工作目录比如:/home/hadoop需要配置2个文件(data是挂载目录,会自动创建)2,hadoop.env内容不用改,基本是默认配置,后续修改配置在这修改就行了,配置详情自己百度下CORE_CONF_fs_defaultFS=hdfs://namenode:8020CORE_CONF_hadoop_http_staticuser_user=rootCORE_CONF_hadoop_proxyuser_hue_hosts=*CORE_CONF_hadoop_pro_bde2020/hadoop

Cocos2d-x 窗口大小调整_cocos2dx设置窗口大小-程序员宅基地

文章浏览阅读4.2k次。打开src目录下的AppDelegate.cpp文件,若无修改则在第45行处找到全局声明的Size变量,修改`designResolutionSize`中的大小即可。_cocos2dx设置窗口大小

springboot接收枚举值的默认方式_springboot get请求怎么接收前端传递的枚举数字-程序员宅基地

文章浏览阅读1.6k次。测试代码:@PostMapping() public void test(@RequestBody Student student){ System.out.println(student.getLover().name()); }class Student{ private Lover lover; public Lover getLover() { return lover; } public void setLover_springboot get请求怎么接收前端传递的枚举数字

【数学建模笔记】【第七讲】多元线性回归分析(二):虚拟变量的设置以及交互项的解释,以及基于Stata的普通回归与标准化回归分析实例_stata两个虚拟变量的交互项-程序员宅基地

文章浏览阅读1.5w次,点赞24次,收藏120次。简单来说就是去量纲后的回归(因为你要比较不同变量之间的显著性的大小,那么带着量纲怎么比,所以先把量纲去掉,然后再比较)官话:为了更为精准的研究影响评价量的重要因素(去除量纲的影响),我们可考虑使用标准化回归系数。_stata两个虚拟变量的交互项

随便推点

一起学设计模式 - 一起开始设计模式的修炼之路_一起来学习设计模式-程序员宅基地

文章浏览阅读188次。文章目录一起学设计模式 - 一起开始设计模式的修炼之路1.为什么要学设计模式2.设计模式的六大原则2.1 单一职责原则(Single responsibility principle)2.2 开闭原则(Open Close Principle)2.3 里氏替换原则LSP(Liskov Substitution Principle)2.4 依赖倒转原则(Dependence Inversion Principle)2.5 接口隔离原则(Interface Segregation Principle)2.6 迪_一起来学习设计模式

第8课 商业需求文档(BRD)撰写方法与技巧-程序员宅基地

文章浏览阅读183次。课前提问:• BRD的内容结构有哪些?• BRD的写作内容与汇报对象有什么关系?应该有哪些注意的地方?• 不同的汇报对象,他们都关心什么样的内容?• BRD的核心重点在哪里? 8.1 BRD文档写作的目的 • BRD文档的目的– 发现• 现有产品改进的可能• 一个创新产品– 需要• 要权重• 要项目• 要资..._好的brd文档应该具备哪些特征

集成学习(Ensemble Learning)_小型数据集联合学习-程序员宅基地

文章浏览阅读4.4k次,点赞3次,收藏9次。集成学习(Ensemble Learning)  集成学习是机器学习中一个非常重要且热门的分支,是用多个弱分类器构成一个强分类器,其哲学思想是“三个臭皮匠赛过诸葛亮”。一般的弱分类器可以由决策树,神经网络,贝叶斯分类器,K-近邻等构成。这些算法可以是不同的算法,也可以是相同的算法。已经有学者理论上证明了集成学习的思想是可以提高分类器的性能的,比如说统计上的原因,计算上的原因以及表示上的原因。 ..._小型数据集联合学习

恭迎万亿级营销(圈人)潇洒的迈入毫秒时代 - 万亿user_tags级实时推荐系统数据库设计...-程序员宅基地

文章浏览阅读418次。标签PostgreSQL , 标签 , 推荐系统 , 实时圈人 , 数组 , gin , gist , 索引 , rum , tsvector , tsquery , 万亿 , user , tag , 淘宝背景我们仅用了PostgreSQL的两个小特性,却解决了业务困扰已久的大问题。推荐系统是广告营销平台的奶牛,其核心是精准、实时、..._实时圈人

软件测试风险追踪表_软件测试风险管理表格-程序员宅基地

文章浏览阅读430次。软件测试风险追踪表风险追踪表 项目名称: 填制人: 编号 风险描述 影响 风险等级 发生的可能性 应对策略 状态 责任人 备注 ..._软件测试风险管理表格

AAC ADTS封装实现-程序员宅基地

文章浏览阅读1.2k次。一、AAC音频格式种类有哪些AAC音频格式是一种由MPEG-4标准定义的有损音频压缩格式。AAC包含两种格式 ADIF(Audio Data Interchange Format音频数据交换格式)和ADTS(Audio Data transport Stream音频数据传输流)。ADIF特点:可以确定的找到音视频数据的开始,不需要进行在音视频数据流中间开始的解码,它的解码必须在明确的定义开始。应用场景:常用在磁盘文件中。ADTS特点:具有同步字的比特流,解码可以在这个流中任何位置开始。类似于mp_aac adts

推荐文章

热门文章

相关标签