php微信token存储,php获取微信公众帐号access_token存储并长期使用

2023-11-16

header("Content-type: text/html; charset=utf-8");

$apitest = new GetWeixinToken ();

$apitest->cacheData('weixin_access_token');//获取微信公众号的access_token

class GetWeixinToken {

private $_dir;

const EXT = '.php';

private $app_id;//微信公众号app_id

private $appsecret;//微信公众号apsecret

public function __construct() {

$this->app_id = '你的微信appid';

$this->appsecret = '你的apsecret';

$this->_dir = dirname(__FILE__) . '/files/';

}

//获取微信公众号access_token

public function getAccessToken(){

$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->app_id.'&secret='.$this->appsecret;

$token_json = $this->get_url($url);

$token_arr = json_decode( $token_json, true );

if( array_key_exists('errcode', $token_arr) ){

exit( $token_arr['errmsg'] );

}else{

return $token_arr;

}

}

//将获取到的access_token保存到缓存文件,以备长期使用

//$key : 自定义文件名

//$value : 写入缓存的数据

public function cacheData($key,$expires="7200"){

$filename = $this->_dir . $key . self::EXT;

//获取缓存时,判断文件是否存在

if(!is_file($filename)) {

$value = $this->getAccessToken();//获取微信公众号的access_token

if($value !== '') { // 将value值写入缓存

$dir = dirname($filename);

if(!is_dir($dir)) {

mkdir($dir, 0777);

}

$is_write_ok = file_put_contents($filename,json_encode($value));//写入数据

if( $is_write_ok ){

echo '直接获取'.$value['access_token'];

}

}

}else{

$file_modfiy_time = filemtime ( $filename );//获取文件的上次修改时间

//如果当前时间距上次缓存的修改时间小于access_token的有效时间将不去写入缓存

if( time() - $file_modfiy_time < $expires ){

$contents = file_get_contents($filename);

$access_token = json_decode( $contents ,true);

echo '获取缓存'.$access_token['access_token'];

}else{

@unlink( $filename );//删除缓存文件

$this->cacheData($key);

}

}

}

/**

* @param str $url post传递的url地址

* @return string

*/

public function get_url($url){

//2初始化

$ch = curl_init();

//3.设置参数

curl_setopt($ch , CURLOPT_URL, $url);

curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);

//4.调用接口

$res = curl_exec($ch);

if( curl_errno($ch) ){

exit( curl_error() );

exit();

}else{

return $res;

//5.关闭curl

curl_close( $ch );

}

}

}

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

php微信token存储,php获取微信公众帐号access_token存储并长期使用 的相关文章

  • MySQL--彻底删除数据, 修改/设置密码

    目录 MySQL彻底卸载的方法 修改 设置密码 1 使用 SET PASSWORD 命令 2 使用mysqladmin修改密码 3 UPDATE直接编辑user表 4 忘记密码 此文的背景是 昨天反复安装了几次 刚开始一直无法正常启动使用
  • 语义分割python教学_语义分割:基于openCV和深度学习(二)

    语义分割 基于openCV和深度学习 二 Semantic segmentation in images with OpenCV 开始吧 打开segment py归档并插入以下代码 Semantic segmentation with Op
  • VMware虚拟机禁止防火墙启动

    每次打开虚拟机时候 都会启动防火墙 使用起来很不方便 可以做到永久关闭防火墙 查看firewall状态 systemctl status firewalld service 停止firewall systemctl stop firewal
  • 线段树(单点修改+区间查询)(区间修改+区间查询)

    什么是线段树 线段树 是一种二叉搜索树 它将一段区间划分为若干单位区间 每一个节点都储存着一个区间 它功能强大 支持区间求和 区间最大值 区间修改 单点修改等操作 线段树的思想和分治思想很相像 线段树的每一个节点都储存着一段区间 L R 的
  • (三)Fabric2.0启动网络脚本配置剖析

    总目录 0 如何利用区块链保护知识产权 一 HyperLedger Fabric 2 0 release测试网络部署 二 Fabric2 0 first network 生成配置说明 三 Fabric2 0启动网络脚本配置剖析 四 Fabr
  • 初识MySQL(一)

    目录 一 初识MySQL数据库 Database 1 1 为什么要有数据库 1 2 关于数据库的大体分类 二 数据库的操作 2 1 如何创建一个库 2 1 1 SQL方式 2 1 2 图形化界面方式 My SQL Workbench 2 2
  • python socket基于TCP/IP协议实现多人聊天室

    文章目录 前言 一 实现原理 二 queue队列 三 代码实现 四 需要注意的地方 五 总结 前言 所谓套接字 Socket 就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象 一个套接字就是网络上进程通信的一端 提供了应用层进程
  • Vue简单示例——weex跨平台解决方案

    简单介绍 Weex的出现主要解决了Web开发的应用频繁发布版本和多端研发两个问题 同时解决了前端语言性能差异和显示效果受限的问题 什么是weex Weex是使用流行的Web开发体验来开发高性能原生应用框架 使开发者可以用JS语言和前端开发经
  • H264/AVC-帧内预测

    I宏块使用帧内预测编码压缩数据 根据相邻宏块数据恢复当前宏块信息 值得注意的一点是 帧内预测所参考的相邻宏块数据是deblocking之前的像素值 因为上一宏块的deblocking依赖当前宏块像素值 但当前宏块数据还未重建 1 帧内预测类
  • Python 综合面试题(附参考答案)

    Python 综合面试题 第一部分 Python 基础 如何理解 python 中的深度拷贝和浅拷贝 浅拷贝旨在减少内存的占用 深拷贝可以在做数据的清洗 修改或者入库 的时候 对原数据进行复制一份 以防数据修改之后 找不到原数据 深浅拷 贝
  • PID算法与PID自整定算法

    本文是由于研发恒温槽项目故需要了解PID控制算法和PID自整定算法 为方便本人日后需要故作此记录 直接粘贴代码吧 这是PID位置式控温算法 函数名 void Pid positional float speed 用途 PID输出 说明 参数
  • 手撕代码:判断二进制串除以3的余数

    题目描述 给定一个长二进制串 求其除以3的余数 思路分析 这里涉及到状态机 由于除以三的余数只可能是0 1 2 所以状态机就有三个状态 现在逐个遍历二进制串 初始余数为0 当遇到1时 状态转到1 遇到0时状态仍为0 对于状态1 判断分别遇到
  • win8 java 32位_java8离线安装包32位 官方最新版

    java8电脑版安装包是一款全新的java编程软件 该软件有着良好的操作性 支持多语种编程 当然也包括中文编程 支持winxp win7 win8 win10等基本微软系统进行操作 全面升级现有Java编程模式 带来一项协同开发的JVM J
  • Opencv.js+Hbuilder快速打造一个图像处理App

    一 开发工具简介 1 Opencv js Opencv 是一个常见的图像处理库 通常使用C 和python去调这个库对图像 视频流进行处理 而js版的opencv可以进一步丰富前端对于图像的处理 目前opencv js版映入了与其他版本基本
  • 安信实验室教你如何实现Windows自动安装!

    用户接入硬件后 Windows 自动下载安装或更新厂商的驱动软件 特点 1 产品的驱动程序及软件已放入微软官方驱动程序库 全世界用户都可以很快捷和方便地自动安装厂商自定义的软件 驱动通过微软官方认证 最佳安全性保障和信用背书 应用软件可以自
  • adb shell dumpsys activity activities调用信息简析

    活动栈 通过执行上面命令 可以得到类似如下格式的信息 Stack 45 type standard mode fullscreen isSleeping false mBounds Rect 0 0 0 0 Stack 0 type hom
  • Python 重命名文件或目录(os.rename)

    文章目录 1 概述 2 语法 os rename 2 1 相对路径 2 2 绝对路径 3 扩展 3 1 os 模块详解 1 概述 mermaid svg 9u1Lg7aqBXqPfILR label font family trebuche
  • Python面试常见的30个问题及答案

    Python面试问题 问题1 Python的主要功能是什么 python特性如下 解释型 动态类型 面向对象 简洁明了 免费自由 有一个庞大的社区 Q 2 区分深层和浅层拷贝 深拷贝将对象复制到另一个对象中 这意味着如果您对对象的副本进行更
  • vue-resource的$http.jsonp方法例子

    div class box div

随机推荐

  • svn版本回退

    SVN版本回退 当一不小心把文件改错了或者误删除了文件并提交到了服务器 我们要取消这些修改的话 首先就是将这个文件还原到上一个修订的版本的内容 revert to this rebision 然后将这个文件重新提交 那么服务器上的这个文件就
  • 集成开发工具使用

    集成开发工具使用 Intellij IDEA介绍 下载 安装 IDEA开发Java项目 IDEA快捷键 IDEA常见配置和操作的学习 1 IDEA 1 1 IDEA概述 IDEA全称Intellij IDEA 是用于Java语言开发的集成环
  • Windows Server 2016-OU组织单位日常操作

    技术无所谓贵贱 既然曾经做过就总该是要留下点什么 毕竟做技术这些年给我们留下太多太多的成长经历 总有人问这些已经很皮毛了为什么还要写 其实没那么多花哨理由 就是想着做或者不做这一块总是要对过往做个简单归总 习惯已成自然 虽然因为种种原因频繁
  • 使用http动词篡改的认证旁路

    文章目录 一 漏洞描述 二 解决建议 三 解决方法 Springboot 配置文件增加配置 编写配置类 编写过滤器 提示 以下是本篇文章正文内容 下面案例可供参考 一 漏洞描述 可能会升级用户特权并通过 Web 应用程序获取管理许可权可能会
  • C++小坑:问号表达式的输出

    文章目录 发现问题 解决方案 发现问题 本来只是想写这样一个测试是否连接成功的判断 std cout lt lt Result gt lt lt Avaliable hey you got it hell suck it lt lt std
  • DSView源码阅读笔记(持续更新中···)

    一 DSView源码阅读笔记 主线任务 将源码成功编译运行 提取示波器功能代码 添加示波器通道数量 找到接收数据部分源码 在win平台上使用qt开发环境进行代码重构 支线任务 以下笔记内容部分是猜测内容 DSView pv mainwind
  • RMS正则化 和 STD正则化 的一些见解

    研究styleganv2过程中 记录下它使用的正则化方法的一些见解 RMS 方均根 STD 标准差 stylegan 中的 pixel norm 是 RMS正则化 常见的BN层 IN层 用的是STD 在不减均值的情况下 RMS正则化公式 t
  • 针对于QT5下找不到QApplication头文件的问题界解决

    感谢前辈的总结 这里用了CTRL C CTRL V进行操作 原地址 http bbs csdn net topics 380130389 老版本 C C code 1 2 include
  • 【计算机网络】数据通信的基础知识

    通信系统的一般模型 数据通信系统的组成部分 源点 信源 产生数据 如从键盘输入 产生数字比特流 发送器 对数字比特流进行编码 如调制器 信道 是信号传输的通道 可能是一条简易的传输线路 也可能是一个复杂的网络 接收器 设备的功能与发送设备相
  • 保姆式教学-实现天空盒旋转

    目录 一 天空盒材质设置 1 在菜单栏window gt Rendering gt lighting 2 设置天空盒子材质 替换默认材质 3 认识Rotation变量 二 代码实现让天空盒转起来 在一个小Unity项目中 需要将天空盒旋转
  • 将MATLAB环境下深度学习目标检测模型部署在Jetson TX2开发板

    摘要 在MATLAB2019b环境下训练深度学习目标检测模型 利用MATLABcoder和GPUcoder生成c 代码和CUDA代码 并部署在NVIDIA Jetson TX2开发板上运行 1 利用NVIDIA SDK manager对TX
  • Python的heapq堆模块

    heapq模块 一 heapq内置模块 二 heapq 模块的使用 1 创建堆方法 2 访问堆的方法 2 获取堆的最大值 最小值方法 总结 一 heapq内置模块 Python中的heapq模块提供了一种堆队列heapq类型 这样实现堆排序
  • Java线程与操作系统线程的关系

    操作系统的线程 Linux操作系统启动一个线程 int pthread create pthread t thread const pthread attr t attr void start routine void void arg 再
  • UE4-DeltaTime(时间增量)

    UE4 DeltaTime 时间增量 Time 2020年10月14日13 33 52 Author Yblackd UE4 DeltaTime 1 结论 2 deltaTime 增量时间 3 为什么乘以 时间增量 4 注意误区 5 参考
  • Linux:Xorg占用现存过大问题

    usr lib xorg Xorg占用3692 MB显存 导致程序出现CUDA out of memory问题 解决方案 1 Ctrl Alt F1 F7 关闭图形界面 输入用户名 密码 输入nvidia smi查看GPU使用情况 发现明显
  • 中国电子信息制造产业运营模式及未来投资方向建议报告2022版

    中国电子信息制造产业运营模式及未来投资方向建议报告2022版 修订日期 2022年2月 出版单位 鸿晟信合研究院 对接人员 周文文 内容分析有删减 了解详情可查看咨询鸿晟信合研究院专员 目录 第1章 中国电子信息制造业发展环境分析 1 1
  • stable diffusion webui 教程:安装与入门

    stable diffusion webui 安装与入门 原理简介 一 源码仓库 二 模型库地址 三 在 Windows 上自动安装步骤 安装Python 安装git 下载源代码 编辑 webui user bat 四 如何打开 五 依据文
  • PHP 创建派生类对象时基类部分问题

    之前我以为在派生类的构造函数中 在调用基类的构造函数前是不能使用基类成员的 因为基类对象还未构造 其中的成员也不存在 但在以下测试中发现 在调用基类的构造函数前基类中的成员已经存在 基类构造函数只是改变了基类中成员的值 class base
  • Android Studio3.4.2新建C++项目,CMakeLists批量添加代码编译不过的坑

    上段时间升级了AS到3 4 2 最后新建了个C 的项目 然后生成的那个native lib cpp文件就可以编译 但是我的项目里 C 代码文件非常多 显然一个一个地添加太慢了 然后就想批量添加进去 但总是编译不过 真是orz 像上图这样 批
  • php微信token存储,php获取微信公众帐号access_token存储并长期使用

    header Content type text html charset utf 8 apitest new GetWeixinToken apitest gt cacheData weixin access token 获取微信公众号的