✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuinka tallentaa WeChat Token välimuistiin PHP:n kautta?

22

WeChat-sovellusliittymät vaativat tunnuksen syötteen, jota käytetään seuraavan API :n kautta :

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

Onnistuessaan se palauttaa merkkijonon ja vanhenemisen sekunneissa. Tämän API:n kutsumisessa on nopeusrajoitus, joten meidän on tallennettava merkkijono paikallisesti välimuistiin, jotta vältytään sovellusliittymän kutsumiselta liian usein. Jos tunnus ei ole vielä vanhentunut, API:n kutsuminen palauttaa saman tunnuksen.

Soittosovellusliittymällä on verkkoviive, ja meidän tulee käyttää tunnusta uudelleen aina, kun voimme. Paras tapa on tallentaa se välimuistiin paikallisesti tietokannan tai tiedoston kautta. Seuraava PHP-skripti tarkistaa välimuistissa olevat tunnukset ja niiden kelpoisuuden.

define('APPID', 'APPID');
define('APPSECRET', 'APPSECRET');
define('TOKENFILE', 'token.txt'); 
define('EXPIRY', 'expiry.txt');
 
date_default_timezone_set('UTC');
 
function getToken() {
  $tokenfile = TOKENFILE;
  $expiryfile = EXPIRY;
  if (is_file($tokenfile)) {
    $token = trim(file_get_contents($tokenfile));
  }
  if ($token && is_file($expiryfile)) {
    $x = (integer)trim(file_get_contents($expiryfile));
    if ($x > 0) {
      if (time() < $x) { // token still valid
        return $token;
      } 
    }  
  } 
  // invoke wechat API if token is not found or has expired
  $url = "<a class="vglnk" target="_blank" href="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APPID."&secret=" rel="nofollow"><span>https</span><span>://</span><span>api</span><span>.</span><span>weixin</span><span>.</span><span>qq</span><span>.</span><span>com</span><span>/</span><span>cgi</span><span>-</span><span>bin</span><span>/</span><span>token</span><span>?</span><span>grant</span><span>_</span><span>type</span><span>=</span><span>client</span><span>_</span><span>credential</span><span>&</span><span>appid</span><span>=".</span><span>APPID</span><span>."&</span><span>secret</span><span>=</span></a>". APPSECRET;
  $data = trim(file_get_contents($url)); 
  if ($data) {
    $data = json_decode($data, true);
    if ($data) {
      $token = $data['access_token'];
      $expiry = time() + (integer)$data['expires_in'];
      // save for cache until expiry
      file_put_contents($tokenfile, $token, LOCK_EX);
      file_put_contents($expiryfile, $expiry, LOCK_EX);
      return $token;
    }
  }
  // can't get valid token
  return ""; 
}

getToken.php Githubissa

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja