通过小程序获取公众号openid

news/2024/11/14 15:27:59/

需求:
由于小程序不能直接向用户发送模板消息,所以需要用公众号向用户发送模板消息。

于是需要将小程序的openid和公众号的openid绑定在一起。提供两种思路:

方法一:
1.微信小程序和公众号都绑定到微信开放平台上,这样小程序登录获取用户信息的时候可以拿到微信用户唯一id(unionid)。

2.公众号方面获取unionid可以利用微信提供的 接收事件推送 的关注事件。用户关注公共号是获取用户信息,其中就会包括unionid,便可将两者绑定在一起。

优点:代码实现比较简单,思路清晰。

缺点:这种方法需要用到服务器配置,一旦启用服务器配置就不能用微信公众号平台提供的自定义菜单。(这就是我在实现了方法一后,又舍弃做了方法二的原因)

方法二:(主要介绍方法二的实现方法和代码)
在小程序中使用 web-view 并配配合微信公众号提供的 网页授权 来实现:

1.在小程序中做一个web-view页面,页面中只需要写微信 网页授权的链接就行了,注意appid请自行替换。redirect_uri是我们第二步中的网页地址,需要在公众号管理平台中配置

<view><view class=""><web-view src="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx41527c1e857edbd6&redirect_uri=http://196.192.168.178:9527/wx/mp&response_type=code&scope=snsapi_base&state=123#wechat_redirect"></web-view></view>
</view>

(这边是微信公众号测试平台的配置方法)

2.做一个专门用来获取微信授权的网站(我这边是用做的)注意引入或安装weixin-js-sdk

<template><div></div></template><script>
import {getMpUserInfo} from "@/api/login";
import wx from 'weixin-js-sdk'export default {name: "login",data() {return {}},created() {//请求后端接口获取公众号openidgetMpUserInfo(this.$route.query.code).then(res => {//跳转回小程序的登录页面并将公众号openid带过去wx.miniProgram.redirectTo({url: "/pages/auth/login/login?mpOpenid="+res.data.data})})}
}
</script>

3.编写后端通过code获取access_token再获取用户openid的方法(这里就不写了)

完成以上步骤微信小程序就获取到用户公众号的openid了 只需将公众号openid和小程序openid 发送到后台就可以将两者绑定在一起,实现微信小程序通过公众号给用户发送模板消息


http://www.ppmy.cn/news/93229.html

相关文章

微服务架构演变

微服务架构演变 认识微服务 服务架构演变 单体架构&#xff1a;将业务的所有功能集中在一个项目种开发&#xff0c;打成一个包部署 优点&#xff1a; 架构简单部署成本低 缺点&#xff1a; 耦合度高 分布式架构&#xff1a;根据业务功能对系统进行拆分&#xff0c;每个业…

devm_of_led_classdev_register 函数

Linux version: 4.14 Code link: Linux source code (v4.14) - Bootlin 1 devm_of_led_classdev_register 函数 int devm_of_led_classdev_register(struct device *parent,struct device_node *np,struct led_classdev *led_cdev) {struct led_classdev **dr;int rc;dr de…

Windows本地快速搭建SFTP文件服务器,并端口映射实现公网远程访问

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

解读智慧城市建设的关键角色:GIS技术的应用与优势

近年来&#xff0c;随着城市化进程的加快和信息技术的迅猛发展&#xff0c;智慧城市成为了城市发展的重要方向。而在智慧城市建设中&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术的应用正发挥着越来越重要的作用。GIS技术以其独特的地理空间分析能力&#xff0c;为…

结对编程 --- 大部分程序员喜欢的编程方式

一、介绍 结对编程起源时间可以追溯到 1990 年代早期。这种编程方法最初由 Jim Highsmith 和 Alistair Cockburn 等人提出。后来&#xff0c;Kent Beck 和 Ward Cunningham 等人将其发展成为一种敏捷开发方法&#xff0c;被称为“极限编程”&#xff08;Extreme Programming&am…

WMS 概述 -- “窗口管理员“

WMS 概述 -- "窗口管理员" 1、WMS 职责2、涉及元素3、WMS、AMS与Activity间的关系 1、WMS 职责 WMS职责理解窗口管理WMS 是窗口的管理者&#xff0c;它负责窗口的启动、添加和删除&#xff0c;另外窗口的大小和层级也是由WMS 进行管理的。窗口管理的核心成员有 Disp…

Android 12.0Launcher3 去掉workspace长按弹出壁纸弹窗

1.概述 在12.0的系统开发中,在Launcher3开发中,在长按屏幕的时候,会弹出窗口,修改主屏幕配置,壁纸,等信息,由于要默认设置一些配置 不想让用户修改相关配置,这时候就需要去掉长按弹窗功能了,禁止修改相关配置 2.Launcher3 去掉workspace长按弹出壁纸弹窗的核心类 /p…

stable-diffusion-webui(1.2.1版本) win10系统本地电脑部署

在安装stable-diffusion-webui(1.2.1版本)之前需要确认win10本地电脑具有的环境 1.显卡类型&#xff1a;NVIDIA&#xff08;英伟达&#xff09; 建议显存高于4G以上&#xff0c;这样512*512的还是可以运行的 2.python(版本必须最好是3.10.6&#xff09;和 git最新版 正式…