How to obtain WeChat access_token by PHP scheduled task

高洛峰
Release: 2023-03-03 17:42:02
Original
1388 people have browsed it

The example in this article describes how to obtain WeChat access_token using PHP scheduled tasks. Share it with everyone for your reference, the details are as follows:

The WeChat access_token will seem to be slightly different during development. Here we will introduce the method of obtaining WeChat access_token by PHP scheduled tasks.

The WeChat public platform has recently been developed. The public account needs to use access_token when calling each interface. Access_token is the globally unique interface calling credential of the public account and needs to be properly saved during development. The access_token is valid for 7200 seconds. Repeated acquisition will cause the last access_token to become invalid.

Since WeChat limits the number of API calls to obtain access_token, it is recommended that developers store and update access_token globally. Frequent refresh of access_token will result in restricted API calls and affect their own business.

So what is a good solution to access_token storage and refresh? My approach is: schedule the task to refresh regularly to obtain the access_token, and then save the access_token locally on the server. The saving method can be a file, database or cache.

Below I use PHP to get the access_token and save it to a local file. Create an access.php with the following code:

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".AppID."&secret=".AppSecret;
$result = http_request($url);
//生成文件,保存token
$dir = __DIR__; //真实路径,crontab命令的php执行在cli模式下,不能正确识别相对路径,所以使用__DIR__
$filename = $dir."/access_token.php";
create_file($filename, $result);
function http_request($url,$data = null){
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  if (!empty($data)){
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  }
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $output = curl_exec($curl);
  curl_close($curl);
  return $output;
}
//生成文件
function create_file($filename, $content){
  $fp = fopen($filename, "w");
  fwrite($fp, "" . $content);
  fclose($fp);
}
Copy after login

The two constants AppID and AppSecret in the above code are provided by the WeChat public platform and can be obtained by logging in to the basic configuration of the WeChat public platform. The obtained access_token is saved in the file access_token.php. Note that the content of this file should not be accessed by users.

Next, we set up scheduled tasks. We take Linux CentOS as an example and use crontab to set up scheduled tasks.

5 * * * * /usr/local/bin/php -f /home/web/access.php >> /dev/null 2>&1
Copy after login

The above command sets access.php to be executed every hour, that is, at the 05th minute of every hour.

In this way, we can ensure the normal acquisition and use of access_token without having to refresh the WeChat server frequently.

I hope this article will be helpful to everyone in PHP programming.

For more related articles on how to obtain WeChat access_token with PHP scheduled tasks, please pay attention to the PHP Chinese website!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template