Home  >  Article  >  Backend Development  >  Example sharing of methods for obtaining WeChat access_token using PHP scheduled tasks

Example sharing of methods for obtaining WeChat access_token using PHP scheduled tasks

墨辰丷
墨辰丷Original
2018-06-01 10:16:062066browse

This article mainly introduces the method of obtaining WeChat access_token by PHP scheduled task, involving the related operation skills of PHP dynamically obtaining access_token based on curl and crontab setting scheduled tasks under CentOS. Friends in need can refer to

WeChat The 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 is there any 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 obtain 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);
}

The two constants AppID and AppSecret in the above code are provided by the WeChat public platform. You can log in to the WeChat public platform. Obtained from the basic configuration of the 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

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.

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.

Related recommendations:

php array_merge_recursive Array merge

PHP XML and array conversion examples Detailed explanation

Example of modifying and deleting XML content with PHP

##

The above is the detailed content of Example sharing of methods for obtaining WeChat access_token using PHP scheduled tasks. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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