Cet article présente principalement l'explication détaillée du développement des autorisations de page Web PHP WeChat. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
L'autorisation de la page Web WeChat est une fonction avancée uniquement disponible pour les comptes de service. Avant cela, le seul moyen d'obtenir des informations sur les messages était via openid lorsque l'utilisateur interagissait avec le responsable. Compte.Obtenir des informations sur l'utilisateur ; l'autorisation de la page Web WeChat peut obtenir les informations de base de l'utilisateur sans nécessiter d'interaction ou d'attention par message.
L'autorisation de la page Web WeChat est effectuée via OAuth2.0. L'ensemble du processus est divisé en trois étapes :
<.>L'utilisateur autorise et obtient le code ;
Obtenir le jeton d'accès selon le code [peut obtenir une période de validité plus longue en rafraîchissant_token]
Obtenir des informations sur les utilisateurs via access_token et openid
<?php /** * 微信授权相关接口 */ class Wechat { //高级功能-》开发者模式-》获取 private $app_id = 'xxx'; private $app_secret = 'xxxxxxx'; /** * 获取微信授权链接 * * @param string $redirect_uri 跳转地址 * @param mixed $state 参数 */ public function get_authorize_url($redirect_uri = '', $state = '') { $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 = '', $app_secret = '', $code = '') { $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 = '', $open_id = '') { 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 'POST': 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 '=====info=====' . "\r\n"; print_r(curl_getinfo($ci)); echo '=====$response=====' . "\r\n"; print_r($response); } curl_close($ci); return array($http_code, $response); } }
Résumé : Voilà, nous espérons que l'ensemble du contenu de cet article sera utile à l'étude de chacun.
Recommandations associées :
Explication détaillée de la conversion entre tableaux et XML traitée par PHP
Explication détaillée des méthodes et exemples d'utilisation de php pour la boucle
Explication détaillée des méthodes et exemples de fonctionnement des fichiers php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!