微信公众号获取用户openid(PHP版,snsapi_base模式)

微信公众号获取用户openid的接口有2个:snsapi_base、snsapi_userinfo

详情见微信公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

本文介绍用PHP方式调用snsapi_base接口获取微信用户的openid(注意:此接口只能获取到用户的openid,如果要获取用户的昵称、头像的信息需要用snsapi_userinfo接口)

操作步骤:

第一步:先让用户关注你的微信公众号(解释:不关注公众号获得openid也没啥用)

第二步:让用户访问snsapi_base接口网址

(1)用户访问接口的方式1:发接口网址给用户,让用户在微信客户端打开网址;(此方法不方便)

(2)用户访问接口的方式2:让用户打开微信扫一扫,扫描二维码直接跳转网址打开;(可以用第三方类库QrCode将url转成二维码图片,此方法方便)

接口网址:

​https://open.weixin.qq.com/connect/oauth2/authorize?appid=填你的APPID&redirect_uri=填你的回调网址&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

回调网址要将url编码后再填进去。

不会url编码怎么办?

可以用在线url网址编解码工具,比如:https://www.bejson.com/enc/urlencode/

微信开发文档中说到:

跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。

但是在实际应用中,用http协议的网址也是可以正常回调的!


当用户访问接口链接后,微信会在你的回调网址后面添加上参数:
redirect_uri/?code=CODE&state=STATE

参数中的CODE是获取openid的关键!

第三步:在回调网址中获取微信用户的openid

假设回调文件名为 get_wx_openid.php

那么在此文件中,编写如下代码即可获取到openid:

<?php$wxCode = $_GET['code'];	if($wxCode != null){try{$getOpenIdUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=填你的APPID&secret=填你的APPSecret密钥&code=" . $wxCode . "&grant_type=authorization_code";$json = file_get_contents($getOpenIdUrl);$jsonObj = json_decode($json);$openId = $jsonObj->openid; }catch(Exception $err){} }
?>

上述代码中,利用code去微信access_token接口获取openid信息,获取到的json内容如下:

只要提取json中的openid字段即可!

获取到openid之后,就可以给用户发送模板消息了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/384984.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习课程学习周报五

机器学习课程学习周报五 文章目录 机器学习课程学习周报五摘要Abstract一、机器学习部分1.1 向量序列作为模型输入1.1.1 文字的向量表达1.1.2 语音的向量表达 1.2 自注意力机制原理1.2.1 自注意力机制理论1.2.2 矩阵运算自注意力机制 1.3 多头自注意力1.4 位置编码1.5 截断自注…

什么是Socket、Socket在Java中的应用、Socket和SocketChannel区别

目录 什么是Socket TCP\IP UDP体系结构 Socket和TCP\IP的关系 Socket在Java中的应用 Socket和SocketChannel的区别 SocketChannel和Selector的关系 服务器的设计演化历程---多线程版 服务器的设计演化历程---线程池版 服务器的设计演化历程---Selector版 参考链接 什么…

Docker 搭建Elasticsearch详细步骤

本章教程使用Docker搭建Elasticsearch环境。 一、拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.2二、运行容器 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-n

【前端 14】Vue常见指令

Vue常见指令 Vue.js 是一个构建用户界面的渐进式框架&#xff0c;它通过一系列简洁的指令&#xff08;Directives&#xff09;来增强HTML的功能&#xff0c;使得开发者能够更加方便地构建出响应式的Web应用。本文将详细讲解Vue中的几个核心指令&#xff1a;v-bind、v-model、v…

软件缺陷(Bug)、禅道

目录 软件缺陷的判定标准 软件缺陷的核心内容 构成缺陷的基本要素 缺陷报告 缺陷管理 缺陷的跟踪流程 项目管理工具--禅道 软件在使用过程中存在的任何问题&#xff08;如&#xff1a;错误、异常等&#xff09;&#xff0c;都叫软件的缺陷&#xff0c;简称bug。 软件缺…

独立开发者系列(35)——python环境的理解

新手阶段&#xff0c;为了快速入门&#xff0c;基本都是直接开始写python代码实现自己想要的效果&#xff0c;类似搭建博客&#xff0c;写个web服务器&#xff0c;搭建简易聊天室&#xff0c;偶尔也写些爬虫&#xff0c;或者使用pygame写个简单小游戏&#xff0c;也有tk库做点简…

树和二叉树(不用看课程)

1. 树 1.1 树的概念与结构 树是⼀种非线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 • 有⼀个特殊的结点&am…

[微信小程序] css 解决纯数字或字母不自动换行的问题、控制文字行数

效果 css 代码 word-break: break-all; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;解释 word-break: break-all; 作用&#xff1a;这个属性允许在单词内部进行换行&#xff0c;即使单词很长也…

FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 课程编辑 先来看下课程编辑 1.判断是否登录 2.判断课程是否存在 3.是否有权限&#xff08;只有自己可以修改自己的课程&#xff09; 4.名称是否重复…

7月23日JavaSE学习笔记

异常&#xff1a; 程序中一些程序处理不了的特殊情况 异常类 Exception 继承自 Throwable 类&#xff08;可抛出的&#xff09; Throwable继承树 Error&#xff1a;错误/事故&#xff0c;Java程序无法处理&#xff0c;如 OOM内存溢出错误、内存泄漏...会导出程序崩溃 常见的…

区块链赋能民生大数据,共筑可信共享新生态

一、背景 在信息化浪潮的推动下&#xff0c;政府服务模式正经历着前所未有的变革。民生卡&#xff0c;作为连接政府与民众的桥梁&#xff0c;承载着居民享受多元化公共服务的重任。然而&#xff0c;部门间信息孤岛现象严重制约了服务效率与居民体验的提升。为此&#xff0c;民…

大厂面试官问我:ConcurrentHashMap底层原理?【后端八股文十五:Java集合合集】

本文为【Java集合 合集】初版&#xff0c;后续还会进行优化更新&#xff0c;欢迎大家关注交流~ hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#…

【Golang 面试基础题】每日 5 题(十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

vue3里将table表格中的数据导出为excel

想要实现前端对表格中的数据进行导出&#xff0c;这里推荐使用xlsx这个依赖库实现。 1、安装 pnpm install xlsx 2、使用 import * as XLSX from "xlsx"; 直接在组件里导入XLSX库&#xff0c;然后给表格table通过ref创建响应式数据拿到table实例&#xff0c;将实…

CSS 基础知识

CSS(级联样式表)是设置 Web 内容样式的代码。CSS 基础知识将介绍入门所需的内容。我们将回答以下问题:如何将文本设置为红色?如何使内容显示在(网页)布局中的某个位置?如何用背景图片和颜色装饰我的网页? 什么是CSS? 像HTML一样,CSS不是一种编程语言。它也不是一种标…

拉提查合创5步玩转git工具协作代码开发

1 工具使用场景 开发团队使用git版本管理工具&#xff0c;进行协作代码开发过程中&#xff0c;最常用的场景为&#xff1a; &#xff08;1&#xff09;拉取代码 将git远端仓库最新代码拉取到本地。 &#xff08;2&#xff09;提交代码 将本地新增修改的代码提交至git远端仓库中…

【Django】开源前端库bootstrap,常用

文章目录 下载bootstrap源文件到本地项目引入bootstrap文件 官网&#xff1a;https://www.bootcss.com/V4版本入口&#xff1a;https://v4.bootcss.com/V5版本入口&#xff1a;https://v5.bootcss.com/ 这里使用成熟的V4版本&#xff0c;中文文档地址&#xff1a;https://v4.b…

SpringBoot整合SSE技术详解

Hi &#x1f44b;, Im shy SpringBoot整合SSE技术详解 1. 引言 在现代Web应用中,实时通信变得越来越重要。Server-Sent Events (SSE)是一种允许服务器向客户端推送数据的技术,为实现实时更新提供了一种简单而有效的方法。本文将详细介绍如何在SpringBoot中整合SSE,并探讨S…

Java的四种引用类型

Java的四种引用类型 1. 强引用&#xff08;Strong Reference&#xff09;2. 软引用&#xff08;Soft Reference&#xff09;3. 弱引用&#xff08;Weak Reference&#xff09;4. 虚引用&#xff08;Phantom Reference&#xff09; &#x1f496;The Begin&#x1f496;点点关注…

go-kratos 学习笔记(4) 服务注册与发现 nacos注册

接口实现​ Registry 接口分为两个&#xff0c;Registrar 为实例注册和反注册&#xff0c;Discovery 为服务实例列表获取 type Registrar interface {// 注册实例Register(ctx context.Context, service *ServiceInstance) error// 反注册实例Deregister(ctx context.Context…