新建配置文件wechat.php
?phpreturn [ oauth = [ appid = *** , appsecret = *** ,];
新建extend/wechat/WechatOauth.php
?phpnamespace wechat; * @package 微信授權控制器html' target='_blank'>class WechatOauth{ //微信授權配置信息 private $wechat_config = [ appid = , appsecret = , public function __construct() { $this- wechat_config = $this- wechatConfig(); * 獲取秘鑰配置 * @return [type] 數組 public function wechatConfig() { $wechat_config = array_merge($this- wechat_config,config( wechat.oauth return $wechat_config; * 獲取openid * @return string|mixed public function getUserAccessUserInfo($code = ) if(empty($code)){ $baseUrl = request()- url(true); $url = $this- getSingleAuthorizeUrl($baseUrl, 123 Header( Location: $url exit(); }else{ $access_token = $this- getSingleAccessToken($code); return $this- getUserInfo($access_token); * 微信授權鏈接 * @param string $redirect_uri 要跳轉的地址 * @return [type] 授權鏈接 public function getSingleAuthorizeUrl($redirect_url = ,$state = 1 ) { $redirect_url = urlencode($redirect_url); return http://open.weixin.qq.com/connect/oauth2/authorize?appid= . $this- wechat_config[ appid ] . redirect_uri= .$redirect_url. response_type=code scope=snsapi_userinfo state={$state}#wechat_redirect * 獲取token * @return [type] 返回token public function getSingleAccessToken($code) { $url = http://api.weixin.qq.com/sns/oauth2/access_token?appid= .$this- wechat_config[ appid ]. secret= .$this- wechat_config[ appsecret ]. code= .$code. grant_type=authorization_code $access_token = $this- https_request($url); return $access_token; * 發送curl請求 * @param $url string * @param return array|mixed public function https_request($url) $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $AjaxReturn = curl_exec($curl); //獲取access_token和openid,轉換為數組 $data = json_decode($AjaxReturn,true); curl_close($curl); return $data; * @explain * 通過code獲取用戶openid以及用戶的微信號信息 * @return array|mixed * @remark * 獲取到用戶的openid之后可以判斷用戶是否有數據,可以直接跳過獲取access_token,也可以繼續獲取access_token * access_token每日獲取次數是有限制的,access_token有時間限制,可以存儲到數據庫7200s. 7200s后access_token失效 public function getUserInfo($access_token = []) if(!$access_token){ return [ code = 0, msg = 微信授權失敗 , $userinfo_url = http://api.weixin.qq.com/sns/userinfo?access_token= .$access_token[ access_token ]. openid= .$access_token[ openid ]. lang=zh_CN $userinfo_json = $this- https_request($userinfo_url); //獲取用戶的基本信息,并將用戶的唯一標識保存在session中 if(!$userinfo_json){ return [ code = 0, msg = 獲取用戶信息失??! , return $userinfo_json;}
控制器調用
public function index() $wchat = new /wechat/WechatOauth(); $code = request()- param( code , $user = $wchat- getUserAccessUserInfo($code); }
相關推薦:
TP數據層進行增刪改查操作的代碼
TP中使用原生的MySQL語句的方法(代碼)
以上就是TP5框架下微信授權登錄的代碼實現的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答