微信公众号获取用户的openid

2023-11-02

公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。

对于微信开发者来说获取用户openid是最基本的操作了,然而还是有人不会获取,说报错,其实错误原因主要存在于:
1.你使用的公众号没有权限,一般认证服务号有次权限,部分订阅号也有;
2.在公众号后台没有配置网页授权域名。

在这里插入图片描述
话不多说,直接上代码:

//设置网络请求配置
public function _request($curl,$https=true,$method='GET',$data=null){
	// 创建一个新cURL资源
	$ch = curl_init();
	
	// 设置URL和相应的选项
	curl_setopt($ch, CURLOPT_URL, $curl);    //要访问的网站
	curl_setopt($ch, CURLOPT_HEADER, false);    //启用时会将头文件的信息作为数据流输出。
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //将curl_exec()获取的信息以字符串返回,而不是直接输出。 
 
	if($https){
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  //FALSE 禁止 cURL 验证对等证书(peer's certificate)。
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  //验证主机
	}
	if($method == 'POST'){
		curl_setopt($ch, CURLOPT_POST, true);  //发送 POST 请求
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  //全部数据使用HTTP协议中的 "POST" 操作来发送。
	}
	
	
	// 抓取URL并把它传递给浏览器
	$content = curl_exec($ch);
	if ($content  === false) {
	  return "网络请求出错: " . curl_error($ch);
	  exit();
	}
	//关闭cURL资源,并且释放系统资源
	curl_close($ch);
	
	return $content;
}
 
 
/**
 * 获取用户的openid
 * @param  string $openid [description]
 * @return [type]         [description]
 */
public function baseAuth($redirect_url){
	
	//1.准备scope为snsapi_base网页授权页面
	$baseurl = urlencode($redirect_url);
	$snsapi_base_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->appid.'&redirect_uri='.$baseurl.'&response_type=code&scope=snsapi_base&state=YQJ#wechat_redirect';
	
	//2.静默授权,获取code
	//页面跳转至redirect_uri/?code=CODE&state=STATE
	$code = $_GET['code'];
	if( !isset($code) ){
		header('Location:'.$snsapi_base_url);
	}
	
	//3.通过code换取网页授权access_token和openid
	$curl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appid.'&secret='.$this->appsecret.'&code='.$code.'&grant_type=authorization_code';
	$content = $this->_request($curl);
	$result = json_decode($content,true);
	
	return $result;
}

返回的结果如下表,其中的openid就是我们想要的。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信公众号获取用户的openid 的相关文章

  • 【网络安全】web漏洞-xml外部实体注入(XXE)

    web漏洞 xml外部实体注入 XXE 目录 web漏洞 xml外部实体注入 XXE 概念 危害 检测方法 利用方法 漏洞利用 xxe lab 有回显情况 无回显情况 pikachu靶场
  • CMAKE_MAKE_PROGRAM is not set 解读

    目录 CMAKE MAKE PROGRAM 未设置 错误原因 解决方案 示例1 GNU Make 示例2 Ninja CMakeLists txt 的结构 示例 CMakeLists txt 文件 总结 CMAKE MAKE PROGRAM
  • 如何给 unplugin-vue-components/vite 写一个简单的 resolver

    大部分工作 unplugin vue components 都已经处理好了 我们只需要接收组件名来判断是否是自己的组件 然后处理对应的导入逻辑 一共 3 个字段 as 重命名类似 import componentNameReName fro
  • ❤ Vue3 使用

    Vue3 使用 Vue3之toRefs的使用 作用 toRefs 可以将一个响应式的对象 转换成普通对象 但是转换后的普通对象的每一个属性值都是响应式的 这样我们可以使用es6的对象解构或者三点运算符等操作 代码
  • centos系统有什么好处?

    CentOS是一种基于开源代码的Linux操作系统 它有以下几个优势 1 稳定性 CentOS是一种非常稳定的操作系统 它的代码经过了严格的测试和审查 因此它非常适合作为服务器操作系统使 用 2 安全性 由于CentOS是基于开源代码的操作
  • 每天10个前端小知识 <Day 1>

    前端面试基础知识题 1 将数组的length设置为0 取第一个元素会返回什么 设置 length 0 会清空数组 所以会返回 undefined 2 e target 和 e currentTarget 有什么区别 e target 触发事
  • 微信怎么申请小程序商城?一步步教你完成

    随着移动互联网的发展 越来越多的企业和个人开始关注微信小程序 微信小程序是一种不需要下载安装即可使用的应用 它实现了应用 触手可及 的梦想 用户扫一扫或者搜一下就能打开应用 其中 小程序商城因其便捷性和实用性 受到了众多商家的青睐 那么 如
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 探索Web开发的未来——使用KendoReact服务器组件

    Kendo UI 是带有jQuery Angular React和Vue库的JavaScript UI组件的最终集合 无论选择哪种JavaScript框架 都可以快速构建高性能响应式Web应用程序 通过可自定义的UI组件 Kendo UI可
  • HTML概述、基本语法(表格整理、标签、基本结构)

    一 HTML概述 HTML指的是超文本标记语言 超文本 是指页面内可以包含图片 链接 声音 视频等内容 标记 标签 通过标记符号来告诉浏览器页面该如何显示 我们可以打开浏览器 右击页面 点击 查看网页源代码 来方便了解HTML标签通过浏览器
  • 点击存储到固定时间清除存储

    这段代码 无意间想到的 随便写了下来 运行 根据点击之后传递一个参数 将他存入本地存储 方便测试为10秒 10秒后触发下一个事件 清除本地存储 结束
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中 冒号 的作用是为提取的字段指定一个新的变量名 让我们以示例 const billCode code version route query 来说明 billCode code version 表示从 route query
  • 课设:NFA确定化和最小化程序的设计与实现(html+css+js实现)

    文章目录 问题描述 待解决问题 1 如何存储NFA或者是DFA 2 NFA多初态问题 3 子集化过程思路 4 分割法过程思路 使用方法 下载链接 问题描述
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 服务器中E5和I9的区别是什么,如何选择合适的配置

    随着科技的进步 服务器处理器的性能在不断攀升 其中 Intel的E5和I9系列处理器在业界具有广泛的影响力 而当我们在选择服务器的时候会有各种各样的配置让我们眼花缭乱不知道该怎么去选择 下面我跟大家分享一下E5跟I9有什么区别 方便我们在选
  • 获取年与年之间的所有年份

    function getYearsBetween startYear endYear var years 存放结果的数组 for var year startYear year lt endYear year years push year
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser
  • 【前端】canvas图片加文字

    注释标记了操作步骤 import React Component createRef from react class CertifyImgRender extends Component bgRef createRef

随机推荐

  • C语言递归实现二分法查找

    专升本过程中遇到的问题 现用C语言递归实现二分法查找算法 本人的第一篇博文 如有错误 还请指正 关于二分法的详细介绍 请看链接 递归实现二分法查找 语言 C语言 开发环境 Windows 10 VC 6 0 代码版本 1 0 作者 影帝级扑
  • Jsp页面POST提交表单出现404

    项目场景 在IDEA里启动tomcat通过jsp页面访问servlet servlet映射的url通过注解设置为 login 问题描述 jsp页面里提交表单时 浏览器里出现如下的404提示信息 未找到 原因分析 在IDEA配置tomcat的
  • 并发编程笔记——多线程设计模式

    1 Single Threaded Execution模式 单线程执行模式 指 以 个线程执 该模式 于设置限制 以确保同 时间只能让 个线程执 处理 2 Immutable模式 不可变模式 存在确保实例状态不发 改变的类 在访问这些实例时
  • c++后台开发适合入坑吗?就业前景如何?

    一 什么是c 后台开发 c 后台开发也可以叫c 后端开发 其实从技术上来说并无不同 c 后台开发就是基于linux环境和C 语言的服务器程序开发 像qq服务器 微信服务器 王者荣耀服务器等等 虽然现在各种高级语言大火 但是在高性能这一块 c
  • 旧版本Druid回收连接引发的'recyle error'

    公司官网上的心跳交易不执行了 按理说是定时任务做的 怎么会不执行呢 遂去查看日志发现 ERROR 2018 09 25 20 30 37 933 AgtForwardServiceImpl java 31 转发数据推送异常 nested e
  • 学习Python的心得体会

    随着人工智能 大数据的火热 Python成为了广大科学家和普通大众的学习语言 在学习Python的过程中 我感到迷茫不知道自己该从什么地方入手 我在学习Python之前了解过这门语言 也知道Python有很多的学习方向 比如说数据采集方向
  • 【配置跑通Omni-Swarm(omni swarm:开源的多机器人协同SLAM算法)持续踩坑排雷更新中。。。】

    配置跑通Omni Swarm omni swarm 开源的多机器人协同SLAM算法 持续踩坑排雷更新中 旨在记录跑通Omni Swarm过程 踩坑排雷 文章目录 配置跑通Omni Swarm omni swarm 开源的多机器人协同SLAM
  • linux中.tar文件怎么解压

    linux中 tar文件怎么解压 1 打包压缩tar cvf etc tar app etc 打包 tar zcvf pack tar gz pack 打包压缩为一个 gz格式的压缩包 tar jcvf pack tar bz2 pack
  • 编写.gitignore文件

    有时候我们并不想要把一个项目都提交到git上 比如一个基于当前服务器的配置 当项目迁移到另一个服务器上时 这个配置相应变成了与另一个服务器相关的 如果在提交到git服务器时连同该配置一同提交 就很容易因为未及时修改而发生错误 这时候 就需要
  • 无约束最优化问题

    估计有些读者看到这个题目的时候会觉得很数学 和自然语言处理没什么关系 不过如果你听说过最大熵模型 条件随机场 并且知道它们在自然语言处理中被广泛应用 甚至你明白其核心的参数训练算法中有一种叫LBFGS 那么本文就是对这类用于解无约束优化算法
  • var模型matlab代码_VAR模型

    前言 说来话长 这是失败的实践 前几天有个比赛 其中数据处理部分 它给出了前很多年2G 3G 4G 总无线接入网络数据规模的数据 让预测2020年5G和总的 当时一看题就觉得要用时间序列模型 多元时间序列模型就想拿VAR练练手 但是因果检验
  • 接口测试工具Apifox 基础篇:数据传递与处理

    一 接口之间如何传递数据 1 使用场景 接口B请求参数依赖于接口A返回的数据 2 实现思路 2 1 接口A使用后置操作 gt 提取变量功能将请求完成后返回的数据提取作为变量 2 2 接口B对应的参数值直接引用前面设置的变量 3 使用示例 3
  • R语言学习:数据结构2-向量

    向量 vector 只能包含同一类型的对象 创建向量 向量的类型 命名 vector x lt vector character length 10 生成指定长度的空向量 x1 lt 1 4 x2 lt c 1 2 3 x3 lt c TR
  • Apple iOS MDM开发流程

    一年前曾参与一个企业移动平台项目 实现了通过MDM对iOS设备进行管理 由于苹果对于mdm这块的接口及开发流程只向几个合作伙伴进行了分享 并没有对具体实现的文档进行公开 所以这方面的资料非常少 现在把实现的过程分享给大家 希望能对大家有所帮
  • pandas常用功能与函数介绍(结合实例,持续更新)

    本文首先介绍Pandas常用功能及函数 最后通过实例举例说明 一 常用功能及函数简介 包导入 一般我们需要做如下导入 numpy和pandas一般需要联合使用 import pandas as pd import numpy as np 本
  • meethigher-JPA实体监听器-@EntityListeners

    参考文章JPA实体类监听器 EntityListeners注解使用实例 疯狂的蜗牛 CSDN博客 entitylisteners 本文源码 这也是来源于工作中的一个小需求 因为产品迭代时 需要给前端创建人 但是由于创建人是在操作记录的表里记
  • 【linux系统基础知识-Shell脚本学习笔记12-循环】

    12 1 循环说明解释 循环是可以使你多次执行一系列命令 循环包括 for循环 while循环 select循环 for do done while do done until do done 12 2 for循环 for循环使你对列表中的
  • 用TW8836驱动ST7701S TTL屏调试记录

    近段时间做一个项目 要调试3 2寸320x820分辨率的LCD 在此做下记录 屏规格书如上图 屏的主要接口如上图 1 查看屏的规格书 如图所示 需要8836和st7701s通讯 方式是3线SPI 2 通讯接口SDA SCK CS 3 RGB
  • zabbix搭建

    1 环境 本实验使用一台centos7主机 关闭了firewalld和selinux服务 zabbix版本为5 0版本 mysql使用版本为5 7版本 若要搭建6 0以上版本的zabbix 则需要使用mysql 8 0以上的版本 其它版本的
  • 微信公众号获取用户的openid

    公众号可获得关注者的OpenID 加密后的微信号 每个用户对每个公众号的OpenID是唯一的 对于不同公众号 同一用户的openid不同 公众号可通过本接口来根据OpenID获取用户基本信息 包括昵称 头像 性别 所在城市 语言和关注时间