Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Entwicklung der PHP-WeChat-Webseitenautorisierung

Detaillierte Erläuterung der Entwicklung der PHP-WeChat-Webseitenautorisierung

墨辰丷
墨辰丷Original
2018-06-05 14:00:402121Durchsuche

In diesem Artikel wird hauptsächlich die Entwicklung der PHP-WeChat-Webseitenautorisierung vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Die WeChat-Webseitenautorisierung ist eine erweiterte Funktion, die nur für Dienstkonten verfügbar ist. Entwickler können grundlegende Informationen von Benutzern durch Autorisierung erhalten. Bisher war die einzige Möglichkeit, Nachrichteninformationen zu erhalten, wenn der Benutzer mit dem Beamten interagierte Benutzerinformationen abrufen; durch die Autorisierung der WeChat-Webseite können die grundlegenden Informationen des Benutzers abgerufen werden, ohne dass eine Nachrichteninteraktion oder Aufmerksamkeit erforderlich ist.

Die Autorisierung der WeChat-Webseite erfolgt über OAuth2.0. Der gesamte Prozess ist in drei Schritte unterteilt:

  • Benutzer autorisiert und erhält Code;

  • Zugriffs-Token gemäß Code erhalten [kann durch Aktualisierung des_Tokens eine längere Gültigkeitsdauer erhalten]

  • Benutzerinformationen über access_token und openid abrufen

Eine einfache Zusammenfassung des WeChat-Webseiten-Autorisierungsprozesses:

 <?php
 
/**
 * 微信授权相关接口
 */
 
class Wechat {
  
  //高级功能-》开发者模式-》获取
  private $app_id = &#39;xxx&#39;;
  private $app_secret = &#39;xxxxxxx&#39;;
 
 
  /**
   * 获取微信授权链接
   * 
   * @param string $redirect_uri 跳转地址
   * @param mixed $state 参数
   */
  public function get_authorize_url($redirect_uri = &#39;&#39;, $state = &#39;&#39;)
  {
    $redirect_uri = urlencode($redirect_uri);
    return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";
  }
  
  /**
   * 获取授权token
   * 
   * @param string $code 通过get_authorize_url获取到的code
   */
  public function get_access_token($app_id = &#39;&#39;, $app_secret = &#39;&#39;, $code = &#39;&#39;)
  {
    $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->app_id}&secret={$this->app_secret}&code={$code}&grant_type=authorization_code";
    $token_data = $this->http($token_url);
    
    if($token_data[0] == 200)
    {
      return json_decode($token_data[1], TRUE);
    }
    
    return FALSE;
  }
  
  /**
   * 获取授权后的微信用户信息
   * 
   * @param string $access_token
   * @param string $open_id
   */
  public function get_user_info($access_token = &#39;&#39;, $open_id = &#39;&#39;)
  {
    if($access_token && $open_id)
    {
      $info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$open_id}&lang=zh_CN";
      $info_data = $this->http($info_url);
      
      if($info_data[0] == 200)
      {
        return json_decode($info_data[1], TRUE);
      }
    }
    
    return FALSE;
  }
  
  public function http($url, $method, $postfields = null, $headers = array(), $debug = false)
  {
    $ci = curl_init();
    /* Curl settings */
    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ci, CURLOPT_TIMEOUT, 30);
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
 
    switch ($method) {
      case &#39;POST&#39;:
        curl_setopt($ci, CURLOPT_POST, true);
        if (!empty($postfields)) {
          curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
          $this->postdata = $postfields;
        }
        break;
    }
    curl_setopt($ci, CURLOPT_URL, $url);
    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ci, CURLINFO_HEADER_OUT, true);
 
    $response = curl_exec($ci);
    $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
 
    if ($debug) {
      echo "=====post data======\r\n";
      var_dump($postfields);
 
      echo &#39;=====info=====&#39; . "\r\n";
      print_r(curl_getinfo($ci));
 
      echo &#39;=====$response=====&#39; . "\r\n";
      print_r($response);
    }
    curl_close($ci);
    return array($http_code, $response);
  }
 
}

Zusammenfassung: Das ist es für diesen Artikel Der gesamte Inhalt des Artikels soll für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

Detaillierte Erläuterung der Konvertierung zwischen Arrays und XML, die von PHP verarbeitet werden

Detaillierte Erläuterung der Methoden und Beispiele für die Verwendung von PHP-Schleifen

Detaillierte Erläuterung der Methoden und Beispiele für den PHP-Dateibetrieb

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Entwicklung der PHP-WeChat-Webseitenautorisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:CSPRNG-Funktion in PHPNächster Artikel:CSPRNG-Funktion in PHP