PHP微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo

一、这个文件微信授权使用的是OAuth2.0授权的方式。主要有以下简略步骤:

  第一步:判断有没有code,有code去第三步,没有code去第二步

  第二步:用户同意授权,获取code

  第三步:通过code换取网页授权access_token

  第四步:使用access_token获取用户信息

 

<?php
/**
 * 获取微信用户信息
 * @author: Lucky hypo
 */
class GetWxUser{    
    private $appid = '';
    private $appsecret = '';
   /**
    * 1、获取微信用户信息,判断有没有code,有使用code换取access_token,没有去获取code。
    * @return array 微信用户信息数组
    */
    public function get_user_all(){
        if (!isset($_GET['code'])){//没有code,去微信接口获取code码
            $callback = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];//微信服务器回调url,这里是本页url
            $this->get_code($callback);
        } else {//获取code后跳转回来到这里了
            $code = $_GET['code'];
            $data = $this->get_access_token($code);//获取网页授权access_token和用户openid
            $data_all = $this->get_user_info($data['access_token'],$data['openid']);//获取微信用户信息      
            return $data_all;
        }
    }
   /**
    * 2、用户授权并获取code
    * @param string $callback 微信服务器回调链接url
    */
    private function get_code($callback){
        $appid = $this->appid;
        $scope = 'snsapi_userinfo';
        $state = md5(uniqid(rand(), TRUE));//唯一ID标识符绝对不会重复
        $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . urlencode($callback) .  '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
        header("Location:$url");
    }    
   /**
    * 3、使用code换取access_token
    * @param string 用于换取access_token的code,微信提供
    * @return array access_token和用户openid数组
    */
    private function get_access_token($code){
        $appid = $this->appid;
        $appsecret = $this->appsecret;    
        $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';
        $user = json_decode(file_get_contents($url));
        if (isset($user->errcode)) {
            echo 'error:' . $user->errcode.'<hr>msg  :' . $user->errmsg;exit;
        }
        $data = json_decode(json_encode($user),true);//返回的json数组转换成array数组
        return $data;
    }    
  /**
    * 4、使用access_token获取用户信息
    * @param string access_token
    * @param string 用户的openid
    * @return array 用户信息数组
    */
    private function get_user_info($access_token,$openid){
        $url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';
        $user = json_decode(file_get_contents($url));
        if (isset($user->errcode)) {
            echo 'error:' . $user->errcode.'<hr>msg  :' . $user->errmsg;exit;
        }
        $data = json_decode(json_encode($user),true);//返回的json数组转换成array数组
        return $data;
    }    
}
?>

 

 

 看到别人封装好的,自己也不想造轮子了。。。顺手转载来的  

现在我写php用easyswoole 这个框架了,刚好需要这种类库

原来链接:http://www.cnblogs.com/hiit/p/8669361.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值