IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 微信公众号基础开发(获取access_token) -> 正文阅读

[PHP知识库]微信公众号基础开发(获取access_token)

微信公众号开发 基础支持 获取access_token

下班闲来无事,写的微信基础授权接口,纯手打,并非网上复制,有兴趣的朋友可以参考一下

网页用户授权和拉取用户信息可查看博主其他文章

有兴趣的朋友或者PHP新手可以关注我,不定时更新PHP代码
代码基于 Apache2.4.39 + MySql5.7.26 + PHP7.4.3nts + 小皮面板 + Thinkphp 5.0.24

	/**
	 *  获取基础 access_token 与网页服务的 access_token 不同
	 */
	 
	//自定义sql连接
    public $Db = [
        'type' => 'mysql',//
        'hostname' => '',
        'database' => '',
        'username' => '',
        'password' => '',
        'hostport' => '3306',
        'prefix' => 'w_',
    ];
	public $Appid = "";
    public $AppSecret = "";
	public $GetToken = "https://api.weixin.qq.com/cgi-bin/token?grant_type=";
    
	public function GetToken()
    {
        $Db = Db::connect($this->Db)->name("wechat_token");
        $grant_type = "client_credential";// 获取access_token填写client_credential
        $token_url = $this->GetToken . "$grant_type&appid=" . $this->Appid . "&secret=" . $this->AppSecret;
        /**
         * 判断Token是否已经存在
         * 1. 根据缓存判断(自行修改条件)
         *  1.1 直接判断缓存是否为空
         *  1.2 因为微信返回为 7200s 和 缓存时长一致,可直接判断
         * 2. 根据SQL数据判断 (推荐)
         *  2.1 查出SQL数据
         *  2.2 根据上次 (更新|添加) 时间 + 微信返回的可用时长
         *  2.2 若大于当前时间 ? 未超时 : 超时
         */
        $AcctokenData = $Db->where(["name" => "access_token"])->find();
        if (empty($AcctokenData) or $AcctokenData['expiration'] < time()) {
            // 不存在
            //获取链接内容
            $TokenInfo = $this->PostCurl($token_url);
            //获取内容默认:JSON,需要转为数组方便调用
            $TokenInfo = !empty($TokenInfo) ? json_decode($TokenInfo, true) : NULL;
            // 判断是否获取到 access_token
            if (!empty($TokenInfo['access_token'])) {
                //已获取到 access_token 存入session 或 存入SQL (缓存存在局限性,建议存到SQL)
                $AcctokenCount = $Db->where(["name" => "access_token"])->count();
                if ($AcctokenCount == 0) {
                    $Db->insert([
                        'name' => "access_token", "token" => $TokenInfo['access_token'],
                        'obtain' => time(), 'expires_in' => $TokenInfo['expires_in'],
                        "expiration" => time() + $TokenInfo['expires_in']
                    ]);
                } else {
                    $Db->where(["name" => "access_token"])->update([
                        "token" => $TokenInfo['access_token'], 'obtain' => time(),
                        'expires_in' => $TokenInfo['expires_in'], "expiration" => time() + $TokenInfo['expires_in']
                    ]);
                }
                $access_token = $TokenInfo['token'];
            } else {
                return $this->msg(404, "获取Token失败,失败原因:" . $TokenInfo['errmsg'], $TokenInfo, 0);
            }
        } else {
            // Token存在并且未超时
            $access_token = $AcctokenData['token'];
        }
        return $this->msg(200, "调用成功", ['access_token' => $access_token,], 1);
    }
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:18:07  更:2021-08-15 15:18:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 6:10:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码