分享

修改新版ECTOUCH微信登录snsapi_userinfo改为snsapi_base

 新学习天地 2016-11-04
Wechat.class.php
public function getOauthUserinfo($access_token,$openid,$type='0'){
        if($type){
            $token = $this->get_token();
        $url2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$openid."&lang=zh_CN";
    $re2 = $this->http_get($url2);
    $rearr2 = json_decode($re2,true);
    return $rearr2;
             
        }
        $result = $this->http_get(self::API_BASE_URL_PREFIX.self::OAUTH_USERINFO_URL.'access_token='.$access_token.'&openid='.$openid."&lang=zh_CN");
        //var_dump($result);
        if ($result)
 
        {
             
 
            $json = json_decode($result,true);
 
            if (!$json || !empty($json['errcode'])) {
 
                $this->errCode = $json['errcode'];
 
                $this->errMsg = $json['errmsg'];
 
                return false;
 
            }
 
            return $json;
 
        }
 
        return false;
 
    }
     
        public function get_token(){// add   
    if($this->getCache('access_tokens')) $this->getCache('access_tokens');   
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
        $ret_json = $this->http_get($url);
        $ret = json_decode($ret_json);
       // dump($ret);
        if($ret -> access_token){   
        $this->setCache('access_tokens',$ret->access_token,7200);      
            return $ret -> access_token;
            }


WechatController.class.php

static function do_oauth()
   {
       // 默认公众号信息
       $wxinfo = model('Base')->model->table('wechat')
           ->field('id, token, appid, appsecret, oauth_redirecturi, type, oauth_status')
           ->where('default_wx = 1 and status = 1')
           ->find();
       if (! empty($wxinfo) && $wxinfo['type'] == 2) {
           $config['token'] = $wxinfo['token'];
           $config['appid'] = $wxinfo['appid'];
           $config['appsecret'] = $wxinfo['appsecret'];
            
           // 微信通验证
           $weObj = new Wechat($config);
           // 微信浏览器浏览
            
            
            
           if (self::is_wechat_browser() && ($_SESSION['user_id'] === 0 || empty($_SESSION['openid'])) && !empty($wxinfo['oauth_status'])) {
               if (! isset($_SESSION['redirect_url'])) {
                   session('redirect_url', __HOST__ . $_SERVER['REQUEST_URI']);
               }
              
               $url = $weObj->getOauthRedirect($wxinfo['oauth_redirecturi'], 1,'snsapi_base');
               if (isset($_GET['code']) && !empty($_GET['code'])) {
                    
                   $token = $weObj->getOauthAccessToken();                  
                   if ($token) {
                        
                       $userinfo = $weObj->getOauthUserinfo($token['access_token'], $token['openid'],'snsapi_base');                      
                       //var_dump($userinfo);
                      // exit;
                       self::update_weixin_user($userinfo, $wxinfo['id'], $weObj);
                       if (! empty($_SESSION['redirect_url'])) {
                           $redirect_url = session('redirect_url');
                           header('Location:' . $redirect_url, true, 302);
                           exit();
                       }
                   } else {
                       header('Location:' . $url, true, 302);
                       exit();
                   }
               } else {  
              // var_dump($url);              
                   header('Location:' . $url);
                   exit();
               }
           }
       }
   }

这里去掉 ‘snsapi_base’ 就变为原来的 snsapi_userinfo 授权页面登录。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多