您的当前位置:首页正文

微信小程序access_token获取 php api代码分享

2024-11-08 来源:个人技术集锦

 最近在做一个微信小程序项目,需要接入微信内容安全,里面有一个access_token。

这是微信官方介绍:

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

公众平台的API调用所需的access_token的使用及生成方式说明:

1、建议公众号开发者使用中控服务器统一获取和刷新access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;

微信小程序要求这个access_token必须在服务器调用,为了安全不支持在前台获取,所以我们就需要一个后台服务端接口专门来刷新access_token然后储存起来供所有前端调用。

<?php

// 检查是否是GET请求
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    echo getAccessToken();
}

function getAccessToken() {
    $appId = '替换'; // 微信小程序的AppID
    $appSecret = '替换'; // 微信小程序的AppSecret
    $tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}";

    // 初始化cURL会话
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $tokenUrl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    // 执行cURL会话
    $response = curl_exec($curl);
    $error = curl_error($curl);
    curl_close($curl);

    if ($error) {
        echo "cURL Error #:" . $error;
        return null;
    }

    $result = json_decode($response, true);
    if (!empty($result['access_token'])) {
        // 将新获取的AccessToken存储起来
        saveAccessToken($result['access_token'], $result['expires_in']);
        return $result['access_token'];
    } else {
        return null;
    }
}

function saveAccessToken($token, $expiresIn) {
    // 存储AccessToken到文件
    $data = json_encode(array("access_token" => $token, "expires_in" => time() + ($expiresIn - 1))); // 300秒的缓冲时间以防止在Token过期前使用
    file_put_contents('access_token.txt', $data);
}

?>

显示全文