一、背景

领导让研究一个活儿:企业微信开发H5应用,微信端客户进入H5页面跟现有的Web系统打通用户权限。通俗的讲:嵌入企业微信H5页面,客户点进去按原权限加载内容。开发者中心有文档,附上两个关键链接:快速集成H5应用    网页授权登录

二、集成H5应用

1、准备本地域名映射

打开HOSTS文件,路径:C:\Windows\System32\drivers\etc,添加一个自己喜欢的域名映射到 127.0.0.1

声明:jd是本人名字缩写,跟京东没关系,纯属巧合

2、新建H5应用

3、配置H5应用

4、配置可信域名

三、启动H5页面

写代码之前交代一下,网页授权登录用的是 OAuth2协议 授权码模式。巧了不是,刚学的 IdentityServer4授权模式 这就用上了

(1)前端是一个 React Demo,准备两个页面:home、oauth(默认页),本地端口:8000,这样在微信客户端进入H5应用就行了。

(2)前面配置H5应用首页是 test.jd.com:8000,就是映射的本地启动的Demo:http://127.0.0.1:8000/oauth。

(3)整个流程、代码(home就不贴代码了,只展示了userid),如图:


四、效果图

说明一下,不能直接在浏览器测试,跳转URL这步会提示要在微信客户端打开连接,用手机太麻烦,PC版企业微信,热更新还方便

五、注意事项(重要)

1、构造授权连接

构造授权连接 获取授权码时要注意 appid(企业的CorpID)、redirect_uri(重定向的Url需要urlencode处理,可以是任意页面,我为了方便仍然定向的oauth,通过code参数判断)、response_type(必须是code)三个参数,其他填默认项即可。

2、获取用户信息

获取用户信息 需要 code、access_token 两个参数,而 access_token 需要提前根据 corpid(企业的CorpID)、corpsecret(应用的凭证密钥)调用接口获取,userid在企业微信是唯一的,跟原业务系统用户绑定,完成权限匹配,再根据权限加载内容即实现了目标。

3、跨域

前台直接请求微信接口是跨域的,我用的React框架是 AntDesgin,本地调试配置一下代理即可,正式环境需解决,如:Nginx等。

4、最重要!!!

获取access_token、用户信息,这两微信个接口应该由H5请求业务系统的后台API,再由后台调用获取信息进行存储、缓存等等操作,API只返回用户信息给H5,前台存储, appid(企业的CorpID)、access_token、corpsecret(应用的凭证密钥)都是敏感信息不应在前后台进行传输,而且顺道还解决了前端跨域问题。

工作小记:企业微信 嵌H5页面 用户权限获取匹配的更多相关文章

  1. 基于Jquery WeUI的微信开发H5页面控件的经验总结(1)

    在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...

  2. 基于Jquery WeUI的微信开发H5页面控件的经验总结(2)

    在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...

  3. 小程序中webview内嵌h5页面

    小程序内嵌h5页面跳转小程序指定页面,  需要引用  JSSDK:   <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2 ...

  4. ios应用内嵌h5页面数据自动变色识别为手机号码的解决方法——手机号码拨号禁用IOS手机页面数字自动识别为手机号

    异常如下: ios应用内嵌h5页面,本来是设置了白色的数字,两三秒之后会自动变为黑色,然后点击的时候就会弹出是否拨号的提示: 解决方法: 添加如下meta标签,即可解决: <meta name= ...

  5. APP中内嵌H5页面为什么不能下载?

    在APP中内嵌H5页面,若页面上存在下载链接,没有任何反应,为什么呢? 原因是app中内嵌的H5页面是WebView解析的,什么是WebView呢? 在Android手机中内置了一款高性能webkit ...

  6. 小程序内嵌H5页面判断微信及小程序环境

    判断微信及小程序环境 1.H5页面引入jweixin-1.3.2.js 2. var ua = window.navigator.userAgent.toLowerCase(); if(ua.matc ...

  7. 微信支付 第三篇 微信调用H5页面进行支付

    上一篇讲到拿到了 预支付交易标识 wx251xxxxxxxxxxxxxxxxxxxxxxxxxxxxx078700 第四步,是时候微信内H5调起支付了! 先准备网页端接口请求参数列表 微信文档中已经明 ...

  8. 微信内 H5 页面自定义分享

    起源: 最近公司在做一个活动的h5页面,在微信内打开时需要进行微信授权,然后后端会重定向到这个页面并且携带了一些参数(openid等).问题是点击微信的原生分享时,会把携带的这些参数一起分享出去,等于 ...

  9. uniapp内嵌H5页面和uniapp页面相互传值

    最近项目有一个需求 -- 做一个百人抽奖的模块,要求展示百人的头像并且不断变化排列组合 先展示一部分的用户头像,然后每增加一个用户就增加一个头像在百人排列里面 我整一个gif图来展示一下 大概就是这种 ...

随机推荐

  1. 解决Ubuntu虚拟机占用空间与实际空间不符问题

    1.背景 右键点击Windows中的Ubuntu虚拟机文件夹,发现它占用Windows磁盘空间大小140GB: 然后进入Ubuntu,输入 df -hl 可以算出实际占用空间也大约为140GB.在Ub ...

  2. python练习册 每天一个小程序 第0002题

    1 #-*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型 ...

  3. Git 、运算符一 JAVA day10

    不知不觉已是第十天学习,学习时时间往往过的很快.废话不多说进入正题: 今天开始学习JAVA中的运算符 一.基本运算符 +,-,*,/.%:加.减.乘.除,余数 下面用IDEA来举例说明 基本运算符 p ...

  4. Linux下使用压力测试工具stress

    一:stress的安装 首先解压安装包到/usr/local/src/下 mv stress-1.0.4.tar.gz /usr/local/src​tar -zxf stress-1.0.4.tar ...

  5. volatile 有什么用?能否用一句话说明下 volatile 的应用场景?

    volatile 保证内存可见性和禁止指令重排. volatile 用于多线程环境下的单次操作(单次读或者单次写).

  6. JVM内存模型小结

    JVM运行时的数据区域划分图如下,该图是JVM内存模型最主要的内容. 从图中可以看出来,JVM将内存主要划分为五个部分:程序计数器.Java虚拟机栈.本地方法栈.Java堆和方法区.这些被划分为用途不 ...

  7. 怎样将 GB2312 编码的字符串转换为 ISO-8859-1 编码的 字符串?

    String s1 = "你好"; String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1 ...

  8. 创建POJO

    创建一个名为student.java的POJO. 第一步,在包里面创建一个student类,右键点击包,点击新建,再点击创建一个类. 第二步,输入类名,点击完成. 第三步,输入数据类型和主键名,再写一 ...

  9. Effective Java —— 覆盖equals时总要覆盖hashCode

    本文参考 本篇文章参考自<Effective Java>第三版第十一条"Always override hashCode when you override equals&quo ...

  10. 数据结构:DHU顺序表ADT模板设计及简单应用:找匹配

    顺序表ADT模板设计及简单应用:找匹配 时间限制: 1S类别: DS:线性表->线性表应用 问题描述: 输入范例: 100000100000 99999 99998 99997 99996 99 ...