✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak buforować token WeChat przez PHP?

23

Interfejsy API WeChat wymagają wprowadzenia tokena, do którego dostęp uzyskuje się za pośrednictwem następującego interfejsu API :

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

Po pomyślnym zakończeniu zwraca ciąg tokena i wygaśnięcie w sekundach. Istnieje limit szybkości wywoływania tego interfejsu API, więc musimy buforować ciąg tokena lokalnie, aby uniknąć zbyt częstego wywoływania interfejsu API. Jeśli token jeszcze nie wygasł, wywołanie API po prostu zwróci ten sam token.

Wywołanie API ma opóźnienie sieci i powinniśmy ponownie użyć tokena, kiedy tylko możemy. Najlepszym sposobem jest buforowanie go lokalnie za pośrednictwem bazy danych lub pliku. Poniższy skrypt PHP sprawdzi, czy przechowywane w pamięci podręcznej tokeny i ich ważność.

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 na Github

Źródło nagrywania: helloacm.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów