微信服务号对接流程记录
项目背景
以web为主,以微信服务号为媒介,进行用户绑定。并通过菜单进入相应页面进行操作
技术栈
React进行微信对接,页面展示
Java负责数据获取
开始
RTFM,不过看微信的文档确实头疼,感觉这个文档像是给老板看的,既冗余又晦涩。
微信公众平台文档
微信相关配置
微信申请以及认证较为简单,虽然很麻烦,但是基本无坑。请参照官方说明进行
一、整体机制
服务号分为三种开发级别
1.个人服务号
基本什么功能都没有,只能发布素材内的内容即:图片+文字
2.企业服务号轻开发(不配置服务器信息)
手动设置菜单,简介明快,可以轻松跳转至现有业务。不过只能获取微信用户ID,不能获取微信昵称、性别、地区等
3.企业服务号全开放
配置服务器信息。配置后菜单只能通过服务器返回,不能通过图形界面设置,可以获取基本全部的信息
本次分享的情景使用机制3
二、基本配置
1.AppID
注册后自动生成,无需配置
2.AppSecret
初期开发不建议开启,可以在后期优化时开启以提高安全性
3.服务器地址
具体意义:整个微信服务号所在地址,前端地址
功能举例:获取用户信息后,返回的地址必须在该地址下
4.令牌(token)
具体意义:可以理解为密码,一般配置在项目中,以确保与微信通信的安全性
5.消息加密秘钥
具体意义:二重加密,token验证身份,该项用于隐藏真实数据
3、4、5的配置
当前版本下(2018年3月)微信要求同时配置345三项。配置较为简单,不过介绍较为晦涩。
具体流程为
1.填写服务器信息,必须是备案域名,只能是80或443端口
2.填写token,字母、数组组合,有字节限制,内容任意填写
3.生成秘钥(即5),点一下就行,无需特别操作
重点来了,点击保存时,微信会有以下行为
4.马上发送一个GET请求到你的URL,看看这个地址到底是何方神圣,能不能用
会发送很多东西,具体见文档的【开始开发->接入指南->验证消息的确来自微信服务器】
你可以在这种情况进行一下验签测试,不过我相信正常人思维都没这么跳跃
5.回复微信的请求
但是,你又必须做点什么,要不微信会觉得你填的是别人的服务器
那就是回复他传过来的echostr,原样返回就行。如果没有正确返回,会无法保存,报token验证失败,橘红色的,嗯。
那有的同学就要问了:我写JS的啊,不会nodeJS啊,返回个屁啊!我80端口还要返回页面呢!
那我只能说,大佬的规定,不得不从,自己研究或者找服务端同学,先过了这关,再把服务器弄回来。
以PHP为例:
<?phpecho $_GET['echostr'];
?>
(公众平台的架构师一定是PHP出身,嗯,一定是)
记得配置PHP和服务器环境,搜索PHP+Apache或PHP+Nginx
如果你返回正确了,会提示保存成功。不过旁边还有个按钮,启用,记得点!
三、开始开发
1.环境准备
工欲善其事必先利其器
微信相关的大多数行为必须在微信中进行。
但是在手机上访问localhost总是比较麻烦,还看不到console.log
好在微信推出了调试工具,下载地址:
Windows 64
Windows 32
Mac
工具整体操作和Chrome基本一致,可以在地址栏输入localhost啦
四、用户信息获取
微信的用户信息获取流程还是有点麻烦的,对于前后端分离的项目来说,前后端都必须参与。
本介绍较为笼统,详见:官方文档
特别需要注意的是,由于跨域问题,一些微信的接口必须由服务端访问
粗略流程图如下:
开始之前
配置回调地址
在设置-公众号设置-功能设置-网页授权域名
设置前端地址,即接收code的那一端。如果未设置会提示回调错误(什么鬼提示),设置时也需要一定配合,就是根目录下要放一个txt文件并保证能访问的到,在设置时,下方有提示。
详细流程
第一步
访问微信地址,带有各种参数,详见文档
第二步
微信回调相应地址,带有code参数
第三步(此步及以后应由服务端完成)
拿code,访问微信oauth2地址,拿到access_token和openID
第四步
拿access_token和openID,访问用户信息地址,拉取用户信息。
其中还有一个流程,可以替代第三步,甚至前三步(如果你建立了自己的用户体系的话),那就是
refresh_token,这个值是与用户绑定的,可以只使用这个值,就获取openID和access_token,并且,有效期30天,如果你能识别当前用户,比如设备id,当用户第二次访问时,可以直接使用用户的refresh_token,来刷新access_token与openID,达到持久绑定的意图。
这比存储用户信息要靠谱的多,假如用户修改了头像、昵称,此方法仍然能获得最新的信息。
(微信用户信息获取,完)
未完待续...
微信服务号对接流程记录相关推荐
- 多个微信服务号对接一个微信商户号流程
微信服务号发送红包需要开通对应的微信商户号,如果多个微信服务号开通多个微信商户号会非常麻烦,项目管理上也会非常乱,写下多个微信服务号对接一个微信商户号的流程. 先登录微信商户平台,产品中心下的APPI ...
- 微信服务号+支付+php,微信服务号发送营销红包给关注用户步骤及部分php代码
微信红包 一.前言: 这里主要讲述的是微信服务号给关注用户发送微信红包的相关内容:主要使用的业务场景有:1.业务员匆匆销员的奖励:2.现场会议互动抽奖:3.微信推广转发奖励:4.其他等等等,大开脑洞想 ...
- APP提现之微信服务号红包
现在很多APP都有提现功能,而提现大部分都是用微信提现,微信提现有两种,一是红包,二是企业付款,在这里结合一下开发,做一些微信服务号发送红包功能的介绍. 例如当前比较火的直播APP映客的提现就是通过微 ...
- 微信服务号开发-整合微信支付
最近的项目在对接微信支付,所以抽出一些时间,将方法总结一下: 欢迎加群交流:724225958 官方开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi. ...
- JAVA连接微信服务号发送模板消息
最近因为业务需要使用微信服务号推送模板消息,所以就研究了下,在这也回顾和总结下开发流程和注意事项. 1. 微信公众号推送模板消息,需要开通服务号并且需要进行微信认证(这点就不过多记录了).申请到服务号 ...
- 基于airtest+poco微信服务号自动化测试NO1
基于airtest微信服务号自动化测试NO1 1. 项目背景 1.1 框架选择airtest+模拟器 1.2 软件安装 1.2.1 mumu模拟器 1.2.2 airtest安装 1.2.3 调试工具 ...
- h5网页使用微信支付JSAPI(申请微信服务号配置域名、获取用户code、配置JSAPI授权目录)
场景: 要在别人家的微信公众号内放入我们的h5网页,涉及到支付只能使用JSAPI支付.从一无所有到成功上线的记录--真难 官方链接地址 1. 微信服务号配置 前提:必须要有一个微信服务号,而且要完成微 ...
- 微信服务号及支付功能接入详解
本文同步至个人博客 微信服务号及支付功能接入详解,转载请注明出处 最近在实现微信服务号支付功能,这边对接入商户资料审核及接口接入相关内容进行梳理. 旨在理清相关帐号的申请流程.整理服务开通.开发数据的 ...
- 【微信服务号开发】01.接入指南
前言 当作为小白,来开发微信的时候,只依据官方文档来开发是很痛苦的,怎么配置,怎么编写代码文件,怎么让映射到外网访问,问题很多,比较痛苦. 下面内容来解决这些痛点,有不懂的问题,可以在下面留言评论哦. ...
最新文章
- Redis 新特性篇:多线程模型解读
- 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码...
- php链接本地mysql数据库配置文件_php连接 mysql 数据库如何添加一个公共的配置文件...
- fetch git pull 切换_git fetch git pull
- 神清气爽,小妹妹,先给她示范了一遍红色警戒
- Python编写只允许实例化一个对象的类
- 在线报表设计实战系列 – 制作动态列与静态列混排的报表(5)
- 语言模型总结(待完善)
- python-pygame小游戏之五子棋
- rstudio 连接mysql_Rstudio ODBC 连接MySQL
- 1999年中国省、自治区的城市规模结构特征的一些数据,可通过聚类分析将这些省、自治区进行分类_BeansSuperman_新浪博客
- 与世界对话丨预康可瘦品牌发布暨全国招商会隆重举行
- STM32F4之按键(二)
- 联想Y7000安装Ubuntu16.04/Win10双系统,wifi问题,显卡驱动和CUDA10安装
- alternate端口什么意思_“Alternate Version”通常指什么意思?
- 工控机的io开发_C#调用工控机dll文件,实现对IO的控制
- Item response theory--项目反应理论
- 大型网站的架构设计图分享
- 简易 PWM 信号发生器的设计与制作
- 盘点5款提高效率的办公软件
热门文章
- 初识Linux操作系统及常用的Linux命令
- 极客时间算法训练营2019版LeetCode练习题题库
- 计算机专业好还是铁道运输管理好,铁道运输管理专业就业前景好原因公布!
- 计算机乐谱深海少女,《深海少女》(初音ミク)钢琴谱
- kivy实现屏幕切换
- Windows7常见问题和知识汇总
- 线性表☞顺序表篇(7000字细致入微讲解)
- 尚硅谷2020最新版宋红康JVM教程更新至中篇(java虚拟机详解,jvm从入门到精通)
- 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比
- Windows 7添加桌面IE图标(非快捷方式)的方法