微信公众号开发--实现扫码关注公众号自动登录网站

微信公众号初识

一、**

如配置消息回复、自定义菜单、发布文章等: 这个时候我们可能会想:这些功能好像非技术人员都能随意操作,那么还需要我们技术人员去开发吗?

至于服务器配置中的选项代表什么意思、如何填写,我们下面再讲。

四、必备开发者工具的使用

2、在线接口调试工具

4、公众平台测试账号

五、细读开发者文档

需要注意的是,细读开发者文档不是让你所有模块都去阅读,而是重点的重复细读,非重点的选择性阅读。

这里我就不多罗嗦了,大家看文档去吧!下面我会描述一些重点内容的实际操作情况以及代码,请确保你已经浏览过文档

六、开发流程重点解析

1.开发环境准备

而我们一般都是内网开发,整个内网只有一个对外域名,所以这时就需要 内网穿透 ,为我们每个开发人员配置各自开发机器的域名。

那如何进行内网穿透呢?你首先可以找下你们的网管,看他能不能帮你解决,如果不能,那就安装内网穿透工具,我们自己动手!

我选择的内网穿透工具是natapp,这个有免费版、收费版,免费版的域名会随机变化,而收费版可以拥有固定域名,建议选择收费版,9元每月并不贵;大家可以对照natapp的文档安装使用,并不难。 这样我们本地开发环境就拥有自己的域名啦!然后就可以在测试号管理页面配置本地访问地址URL了。

这里附上我的签名校验的代码。

3.access_token参数

七.业务逻辑及代码

目前有2种类型的二维码:

获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

创建二维码ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。

临时二维码请求说明

POST数据格式: json POST数据例子:{“expire_seconds”: 604800, “action_name”: “QR_SCENE”, “action_info”: {“scene”: {“scene_id”: 123}}} 或者也可以使用以下POST数据创建字符串形式的二维码参数:{“expire_seconds”: 604800, “action_name”: “QR_STR_SCENE”, “action_info”: {“scene”: {“scene_str”: “test”}}}

永久二维码请求说明

在我们的业务里由于不需要保存二维码,所以选择了使用临时二维码,代码如下(这里的代码有不同的Class,我放在了一起,复制时可根据跟人需要灵活摘取和删减):

2.事件消息回调 用户扫描了带参数的二维码,可能推送以下两种事件:

参数会以xml的数据包格式发到配置的URL,xml格式如下

<xml>
  <ToUserName><![CDATA[toUser]]></ToUserName>
  <FromUserName><![CDATA[FromUser]]></FromUserName>
  <CreateTime>123456789</CreateTime>
  <MsgType><![CDATA[event]]></MsgType>
  <Event><![CDATA[subscribe]]></Event>
  <EventKey><![CDATA[qrscene_123123]]></EventKey>
  <Ticket><![CDATA[TICKET]]></Ticket>
</xml>

3.轮询

轮询接口很简单,就是去查redis中是否有这个场景值ID。 这里我返回的是openId和unionId,是因为在登录的逻辑上需要使用

4.登录注册

八、补充-网页授权

这是我在看到这位的博客受到的启发,讲的非常清楚,通俗易懂,并且跟着这位博主的引导,我也测试成功了网页授权的逻辑。

接下来我就粘贴一下吧。

可以看到,这个接口只需要提供openid或者unionid,即可直接获取用户基本信息。那么问题来了,openid(unionid)又是如何获取呢?

第二种方式:

这种方式就是通过网页授权机制主动出击!详情见下文。 (3)网页授权有哪几种机制?分别是怎样实现?应用于什么场景? 答:主要有两种机制,对应两种scope:

以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。

光看这两句解释你可能有一堆疑问,我们逐一分析:

两种机制的前面授权步骤相同,大概如下:

那么这两种scope授权的优劣势在哪呢?

在此说下,我们项目是通过snsapi_base静默授权的,其中redirect_uri配置的是前端项目首页地址(前后端分离),并将构造的这个链接封装起来,直接配置在自定义菜单里,那么用户点击菜单,就直接重定向到前端项目,然后前端获取code参数调用后端获取openid接口,将获取的openid缓存到客户端,以便后面使用。

(4)想要进行网页授权,我们需要在公众平台配置什么吗? 答:需要! 如果是测试号,需要在 测试号管理 - 体验接口权限表 - 网页服务 - 网页帐号 点击 修改。 在这里配置的是回调页面即redirect_uri的域名!

而且正式号其他配置的地方也和测试号不一样,比如多了IP白名单、域名根路径下的txt验证文件,这个稍微摸索下应该没啥问题的。

借鉴于:

经验分享 程序员 微信小程序 职场和发展