如何快速实现微信公众号扫码关注完成登录(附:超详细操作流程)

Hello,大家好,欢迎使用Webfunny前端监控和埋点平台。

今天,我们来详细介绍一下关注微信公众号后,并完成登录的详细流程。微信登录广为人知了,涉及到订阅号,公众号,小程序等,他们各自登录流程有和区别,很多同学可能不甚清楚。我也是经过一番调研和倒腾才搞明白了是怎么回事,特此记录,以供大家了解和学习。

可以完成微信登录主要涉及两个平台:一个微信公众平台,一个是微信开放平台,他们俩服务的对象是不同的。
微信开放平台主要面对移动应用/网站应用开发者,为其提供微信登录、分享、支付等相关权限和服务。

微信公众平台用于管理、开放微信公众号(包括订阅号、服务号、企业号),简单的说就是微信公众号的后台运营、管理系统。

一、调研的目的

使用微信扫码登录,非常方便,除了可以快捷登录,我们也希望用户能够关注我们的公众号,可以达到运营的目的。所以需要先关注公众号,然后实现登录目的。微信开放平台提供了扫码登录能力,然而微信公众号并没有提供可以登录的权限,所以就不得不换一种思路来实现了。
在这里插入图片描述

二、注册服务号
如果想要实现关注公众号完成登录,就必须先要注册一个服务号。值得注意的是:订阅号是无法做到扫码登录的,因为它没有对应的API调用权限。
在这里插入图片描述

三、完成微信认证

注册服务号需要有企业信息,进行微信认证,上传相关材料,支付一定的费用,每年的年审费用是300元,这里就不再赘述了。

在这里插入图片描述

四、生成开发者密码,设置白名单

开发者密码,默认是没有的,需要重置一下,重置好了以后,请妥善保存,后边需要使用。
IP白名单需要配置,也就是你部署后端服务器的机器IP地址。
在这里插入图片描述

五、配置服务器地址

配置服务器地址,这一步很重要,是完成关注登录的重要流程。首先你要启动一个后端服务,添加对应的响应接口。注意:这里的配置会有一些困惑的地方,需要用同一个接口分别配置 GET、POST两个方法。

/** 微信回调服务 */
router.get('/callback', Wechat.callback)
router.post('/callback', Wechat.callbackPost)

在这里插入图片描述
GET请求的接口用于配置服务器的时候做token验证,这个接口需要在配置服务器的时候做验证,需要提前部署好,否则可能无法配置成功。

  static async callback(ctx) {
    const param = Utils.parseQs(ctx.request.url)
    const { signature, echostr, timestamp, nonce } = param
    const token = "token string"  // 这里就是上一步配置的token
  
    // 将 token、timestamp、nonce三个参数按字典序排序
    const str = [token, timestamp, nonce].sort().join('');
  
    // 加密字符串, 建议使用 sha1加密
    const sha1 = crypto.createHash('sha1');
    sha1.update(str);
    const sha1Str = sha1.digest('hex');
  
    if (sha1Str === signature) {
      console.log("验证成功")
      ctx.response.status = 200
      ctx.body = echostr
    } else {
      ctx.response.status = 200
      ctx.body = "error"
    }
  }

六、处理关注接口的回调方法

POST请求的接口用于接收关注、取消关注、用户回信等事件的回调信息。

const {signature, timestamp, nonce} = Utils.parseQs(ctx.request.url)
const { xml } = ctx.request.body
const {ToUserName, FromUserName, CreateTime, MsgType, Event, EventKey} = xml

参数说明请查看文档

七、打通关注公众号和自己业务之间的关系

这是很重要的一步,用户关注你了,怎么才能让公众号里的openid跟自己的业务id关联上呢,因为只有实现关联后,才能算真正完成登录了,下边是整个流程的时序图:

在这里插入图片描述

八、接口配置公众号菜单

如果咱们配置服务器回调地址,那么自动回复,和手动配置的菜单将无法再使用了,也就是说关注登录和手动配置菜单不可兼得,提示如下:

在这里插入图片描述

用户关注了,这么光秃秃的也不行啊,所以需要配置菜单:
PS:如果需要更新菜单,则需要先删除,然后再创建。
各种参数的介绍我就不在这里赘述了,大家可以参考文档:文档地址

  1. 创建菜单的接口:
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=token
  1. 删除菜单的接口:
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=token
  1. 获取素材接口:
https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=token

总结:虽然微信公众号是一个非常成熟的平台了,但是要把这套流程理清楚搞下来,还是要退层皮啊 !!!o(╥﹏╥)o 微信公众号文档比较齐全,但是有很多容易误解的地方,需要先理解一部分,在结合网络上前辈的经验才能顺利搞定。
最后:公众号关注并登录的流程就完成了,有什么问题的话,请联系我们吧 ^ _ ^
以上是webfunny<微信公众号扫码登录>功能操作介绍, ps: 如果你是前端工程师的相关技术同学,欢迎试用体验**【webfunny前端监控和埋点系统】**
在这里插入图片描述

### 实现微信小程序通过跳转至微信公众号完成支付 #### 配置微信公众平台与小程序关联 为了使微信小程序能够顺利跳转到微信公众号完成支付操作,需确保两者已在微信公众平台上进行了绑定。这一步骤可通过微信公众平台后台设置来完成[^1]。 #### 创建带有参数的二维用于跳转 创建特定格式的二维,该二维应包含指向目标微信公众号页面的信息以及必要的业务参数。当用户描此二维时,会触发微信客户端识别其中路径(path),进而加载对应的网页或执行相应动作。对于希望传递给接收端的数据,则可以通过加于path后的查询字符串形式加入[^3]。 ```json { "path": "/pages/index?source=miniProgram&orderNo=20230718123456" } ``` 上述JSON对象定义了一个简单的示例,`/pages/index`代表要访问的目标页面地址;而后面的问号后面的部分则是作为URL参数被发送出去供后续处理使用的订单编号(orderNo)等信息。 #### 处理来自小程序的请求 在接收到由小程序发起的请求之后,服务器端应当验证传入数据的有效性和安全性,并依据实际需求调用微信支付API接口启动交易过程。通常情况下,这部分逻辑会在服务端实现,利用官方提供的SDK简化集成难度的同时也提高了系统的稳定性和可靠性[^2]。 #### 调用微信支付插件完成付款 最后,在确认所有前置条件均已满足的前提下,引导客户按照提示输入密或其他认证方式以最终完成整个购物流程。值得注意的是,由于涉及到资金安全问题,因此在整个过程中务必遵循严格的权限控制机制,防止任何潜在风险的发生[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值