PHP微信公衆平臺OAuth2.0網頁受權,獲取用戶信息代碼類封裝demo(二)

1、這個文件微信受權使用的是OAuth2.0受權的方式。主要有如下簡略步驟:php

  第一步:判斷有沒有code,有code去第三步,沒有code去第二步git

  第二步:用戶贊成受權,獲取codegithub

  第三步:經過code換取網頁受權access_tokenjson

  第四步:使用access_token獲取用戶信息api

  https://github.com/jijinduoduo/GetWxUser數組

2、代碼GetWxUser.php服務器

 1 <?php
 2 /**
 3  * 獲取微信用戶信息
 4  * @author: Lucky hypo
 5  */
 6 class GetWxUser{    
 7     private $appid = '';
 8     private $appsecret = '';
 9    /**
10     * 一、獲取微信用戶信息,判斷有沒有code,有使用code換取access_token,沒有去獲取code。
11     * @return array 微信用戶信息數組
12     */
13     public function get_user_all(){
14         if (!isset($_GET['code'])){//沒有code,去微信接口獲取code碼
15             $callback = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];//微信服務器回調url,這裏是本頁url
16             $this->get_code($callback);
17         } else {//獲取code後跳轉回來到這裏了
18             $code = $_GET['code'];
19             $data = $this->get_access_token($code);//獲取網頁受權access_token和用戶openid
20             $data_all = $this->get_user_info($data['access_token'],$data['openid']);//獲取微信用戶信息      
21             return $data_all;
22         }
23     }
24    /**
25     * 二、用戶受權並獲取code
26     * @param string $callback 微信服務器回調連接url
27     */
28     private function get_code($callback){
29         $appid = $this->appid;
30         $scope = 'snsapi_userinfo';
31         $state = md5(uniqid(rand(), TRUE));//惟一ID標識符絕對不會重複
32         $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . urlencode($callback) .  '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
33         header("Location:$url");
34     }    
35    /**
36     * 三、使用code換取access_token
37     * @param string 用於換取access_token的code,微信提供
38     * @return array access_token和用戶openid數組
39     */
40     private function get_access_token($code){
41         $appid = $this->appid;
42         $appsecret = $this->appsecret;    
43         $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';
44         $user = json_decode(file_get_contents($url));
45         if (isset($user->errcode)) {
46             echo 'error:' . $user->errcode.'<hr>msg  :' . $user->errmsg;exit;
47         }
48         $data = json_decode(json_encode($user),true);//返回的json數組轉換成array數組
49         return $data;
50     }    
51   /**
52     * 四、使用access_token獲取用戶信息
53     * @param string access_token
54     * @param string 用戶的openid
55     * @return array 用戶信息數組
56     */
57     private function get_user_info($access_token,$openid){
58         $url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';
59         $user = json_decode(file_get_contents($url));
60         if (isset($user->errcode)) {
61             echo 'error:' . $user->errcode.'<hr>msg  :' . $user->errmsg;exit;
62         }
63         $data = json_decode(json_encode($user),true);//返回的json數組轉換成array數組
64         return $data;
65     }    
66 }
67 ?>

 

不足之處,請留言告知,謝謝!微信

相關文章
相關標籤/搜索