一、背景

领导让研究一个活儿:企业微信开发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. SQL注入之PHP+Mysql

    PHP+Mysql(GET方法+数值型+有错误回显)的注入方法 目标系统:PHP+MYSQL(GET方法+数值型+有错误信息) 环境说明: 后台地址:http://ip/cms/admin/login ...

  2. C#中的类型转换-自定义隐式转换和显式转换

    目录 前言 基础知识 示例代码 实际应用 问题 答案 报错 用户定义的转换必须是转换成封闭类型,或者从封闭类型转换 参考 其他 应用和设计 读音 参考 前言 有时我们会遇到这么一种情况:在json数据 ...

  3. linux下的shell脚本

    先说明以下内容来自: http://c.biancheng.net/cpp/shell/ ,C语言中文网,请大家支持原作,点击链接查看. 我写下来只是作为笔记,如果侵权,请留言,立马删除. Shell ...

  4. Java代码规范总结,更新持续中

    1. 实例的开启与关闭 var zkClient: ZooKeeper = null try { zkClient = new ZooKeeper(getZkUrl(), 2000, new Watc ...

  5. 使用Pycharm IDE工具,使用input()函数出现>?符号

    Python Console  ===  如果你是要Pycharm开发Python项目时,出现使用input函数,提示 >? 符号的时候,那应该是开启了Python Console控制台输出,取 ...

  6. HTML、JavaScript、Java、CSS它们的注释有哪些相同和不同?

    <!--html--> /*css*/ //javascript /*javascript*/

  7. jmeter的安装使用

    以前没自己做过压力测试,一直都是测试在做.现在需要自己做压力测试了,特别学习下jmeter的使用方法.现在做下记录: 1.下载jmeter,这个忽略,百度到处都是 2.打开jmeter,jmeter的 ...

  8. 学习SVN03

    SVN版本控制系统最佳实践   第1章SVN介绍及应用场景 1.1什么是SVN(Subversion) Svn(subversion)是近年来崛起非常优秀的版本管理工具,与CVS管理工具一样,SVN是 ...

  9. windows 添加路由表

    route print   查看路由表 route  add      192.168.4.0  mask 255.255.255.0        192.168.18.111   添加路由 rou ...

  10. 学习RabbitMQ(一)

    消息中间件 一.简介 消息中间件就是在消息的传输过程中保存消息的容器.消息中间件再将消息从它的源中继到它的目标时充当中间人的作用.队列的主要目的是提供路由并保证消息的传递:如果发送消息时接收者不可用, ...