项目背景

以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,达到持久绑定的意图。

这比存储用户信息要靠谱的多,假如用户修改了头像、昵称,此方法仍然能获得最新的信息。

(微信用户信息获取,完)

未完待续...

微信服务号对接流程记录相关推荐

  1. 多个微信服务号对接一个微信商户号流程

    微信服务号发送红包需要开通对应的微信商户号,如果多个微信服务号开通多个微信商户号会非常麻烦,项目管理上也会非常乱,写下多个微信服务号对接一个微信商户号的流程. 先登录微信商户平台,产品中心下的APPI ...

  2. 微信服务号+支付+php,微信服务号发送营销红包给关注用户步骤及部分php代码

    微信红包 一.前言: 这里主要讲述的是微信服务号给关注用户发送微信红包的相关内容:主要使用的业务场景有:1.业务员匆匆销员的奖励:2.现场会议互动抽奖:3.微信推广转发奖励:4.其他等等等,大开脑洞想 ...

  3. APP提现之微信服务号红包

    现在很多APP都有提现功能,而提现大部分都是用微信提现,微信提现有两种,一是红包,二是企业付款,在这里结合一下开发,做一些微信服务号发送红包功能的介绍. 例如当前比较火的直播APP映客的提现就是通过微 ...

  4. 微信服务号开发-整合微信支付

    最近的项目在对接微信支付,所以抽出一些时间,将方法总结一下: 欢迎加群交流:724225958 官方开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi. ...

  5. JAVA连接微信服务号发送模板消息

    最近因为业务需要使用微信服务号推送模板消息,所以就研究了下,在这也回顾和总结下开发流程和注意事项. 1. 微信公众号推送模板消息,需要开通服务号并且需要进行微信认证(这点就不过多记录了).申请到服务号 ...

  6. 基于airtest+poco微信服务号自动化测试NO1

    基于airtest微信服务号自动化测试NO1 1. 项目背景 1.1 框架选择airtest+模拟器 1.2 软件安装 1.2.1 mumu模拟器 1.2.2 airtest安装 1.2.3 调试工具 ...

  7. h5网页使用微信支付JSAPI(申请微信服务号配置域名、获取用户code、配置JSAPI授权目录)

    场景: 要在别人家的微信公众号内放入我们的h5网页,涉及到支付只能使用JSAPI支付.从一无所有到成功上线的记录--真难 官方链接地址 1. 微信服务号配置 前提:必须要有一个微信服务号,而且要完成微 ...

  8. 微信服务号及支付功能接入详解

    本文同步至个人博客 微信服务号及支付功能接入详解,转载请注明出处 最近在实现微信服务号支付功能,这边对接入商户资料审核及接口接入相关内容进行梳理. 旨在理清相关帐号的申请流程.整理服务开通.开发数据的 ...

  9. 【微信服务号开发】01.接入指南

    前言 当作为小白,来开发微信的时候,只依据官方文档来开发是很痛苦的,怎么配置,怎么编写代码文件,怎么让映射到外网访问,问题很多,比较痛苦. 下面内容来解决这些痛点,有不懂的问题,可以在下面留言评论哦. ...

最新文章

  1. Redis 新特性篇:多线程模型解读
  2. 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码...
  3. php链接本地mysql数据库配置文件_php连接 mysql 数据库如何添加一个公共的配置文件...
  4. fetch git pull 切换_git fetch git pull
  5. 神清气爽,小妹妹,先给她示范了一遍红色警戒
  6. Python编写只允许实例化一个对象的类
  7. 在线报表设计实战系列 – 制作动态列与静态列混排的报表(5)
  8. 语言模型总结(待完善)
  9. python-pygame小游戏之五子棋
  10. rstudio 连接mysql_Rstudio ODBC 连接MySQL
  11. 1999年中国省、自治区的城市规模结构特征的一些数据,可通过聚类分析将这些省、自治区进行分类_BeansSuperman_新浪博客
  12. 与世界对话丨预康可瘦品牌发布暨全国招商会隆重举行
  13. STM32F4之按键(二)
  14. 联想Y7000安装Ubuntu16.04/Win10双系统,wifi问题,显卡驱动和CUDA10安装
  15. alternate端口什么意思_“Alternate Version”通常指什么意思?
  16. 工控机的io开发_C#调用工控机dll文件,实现对IO的控制
  17. Item response theory--项目反应理论
  18. 大型网站的架构设计图分享
  19. 简易 PWM 信号发生器的设计与制作
  20. 盘点5款提高效率的办公软件

热门文章

  1. 初识Linux操作系统及常用的Linux命令
  2. 极客时间算法训练营2019版LeetCode练习题题库
  3. 计算机专业好还是铁道运输管理好,铁道运输管理专业就业前景好原因公布!
  4. 计算机乐谱深海少女,《深海少女》(初音ミク)钢琴谱
  5. kivy实现屏幕切换
  6. Windows7常见问题和知识汇总
  7. 线性表☞顺序表篇(7000字细致入微讲解)
  8. 尚硅谷2020最新版宋红康JVM教程更新至中篇(java虚拟机详解,jvm从入门到精通)
  9. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比
  10. Windows 7添加桌面IE图标(非快捷方式)的方法