function index() { // 直接把自己作为授权页面 include 'WxOAuth2.class.php'; $oauth2 = new WxOAuth2(); $v_token = $this->_get('token'); $code = $this->_get('code'); $state = $this->_get('state'); // 如果没有授权,就去授权 if (!$state) { $appid = M('wxuser')->where(array('token' => $v_token))->getField('appid'); $oauth2->app_id = $appid; $callback = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']; $url = $oauth2->get_authorize_url($callback, 'snsapi_base', $v_token); header('location:' . $url); } else { if ($code) { // 如果用户同意授权 // 根据用户标识来确定app_id $wxuser = M('wxuser')->where(array('token' => $v_token))->find(); // dump($wxuser); $oauth2->app_id = $wxuser['appid']; $oauth2->app_secret = $wxuser['appsecret']; // 确认授权后会,根据返回的code获取token $token_arr = $oauth2->get_access_token($wxuser['appid'], $wxuser['appsecret'], $code); if (!$token_arr) { die; } else { // header('location:' . implode(',', $token_arr)); } // $user_info = $oauth2->get_user_info($token_arr['access_token'], $token_arr['openid']); //获取用户信息 $this->assign('openid', $token_arr['openid']); if (!$this->wecha_id) { $this->openid = $this->wecha_id = $token_arr['openid']; $this->assign('reopenid', $this->wecha_id); } $this->assign('is_start', $this->is_start($this->packet_info['id'])); $this->display(); } } }
public function wxurl() { // 在自家的token $v_token = $_GET['token']; // 测试时使用上面的 // $wxuser = M('wxuser')->where(array('token' => $v_token))->find(); // dump($wxuser); // global $app_id; include 'WxOAuth2.class.php'; $oauth2 = new WxOAuth2(); // $oauth->app_id = $this->app_id = $wxuser['appid']; // $this->app_id = '11111111'; // $__set // echo $oauth->app_id . '<br>'; // $oauth->app_secret = $app_secret = $wxuser['appsecret']; // import('MyClass.Wechatauth',APP_PATH); // $Wechat = new wechatauth(); // $token = session('token'); //查看是否已经授权 if (session('token')) { echo '存在session,开始删除<br>'; session('token', null); echo 'session已经删除<br>'; } // dump($token); // $wxoauth2 = M('wxoauth2'); // 如果用户session失去,不再使用session // dump($token); // 就从数据库里面得到 // echo 'get database'; // echo '开始从数据库里读取access_token<br>'; // 倒序读取指定token的access_token,就是最后存入的access_token // $t_wxoauth2 = $wxoauth2->where(array('openid' => $v_token))->order('id desc')->find(); // if ($t_wxoauth2) { // 旧的用户,可能会重新授权 // $expire_time = $t_wxoauth2['expire_time']; // 如果当前时间小于失效时间,就使用旧的access_token // if (time() < $expire_time) { // // dump($t_wxoauth2); // $this->token = $token = $t_wxoauth2; // } else { // 重新授权 // 首先要把数组清空 // $this->token = array(); // } // } else { // 如果不存在此用户,就开始新的授权,不是重新授权 // echo '您是新的用户,会开始新的授权<br>'; // $callback = U('wxrurl', '', false, false, true); // $url = $wx->get_authorize_url($callback, $v_token); // echo '授权链接是:' . $url . '<br>'; // echo '<a href=' . $url . '>这是新用户的授权</a><br>'; // } // dump($this->token); // $this->app_id = $t_wxoauth2['appid']; // $this->app_secret = $t_wxoauth2['appsecret']; // die; // 如果是数据库结果不为空 // dump($this->token); // if (isset($this->token)) { // dump($token); // $wxoauth2M('') // echo '类的私有变量不是空的<br>'; // $state = $this->check_access_token($token['access_token'], $token['openid']); //检验token是否可用(成功的信息:"errcode":0,"errmsg":"ok") // print_r($state); // dump($state); // access_token没有失效的话 // if ($state['errcode'] !== 42001) { // $user_info = $this->get_user_info($token['access_token'], $token['openid']); //获取用户信息 // dump($user_info); // echo $user_info['headimgurl']; // die; // $user_info['addtime'] = time(); // foreach ($user_info as $key => $value) { // if (is_array($value)) { // $user_info[$key] = json_encode($value); // } // } // $wx_openid = M('wxoauth2_openid'); // $r = $wx_openid->data($user_info)->add(); // if ($r < 0) { // // } // } else { // echo '[access_token]失效,必须开始重新申请授权<br>'; // 如果access_token失效,就重新申请,她的有效期是7200s,2个小时 // $callback = U('wxrurl', '', false, false, true); // $url = $this->get_authorize_url($callback, $v_token); // echo '<a href=' . $url . '>access_token失效,请重新授权</a>'; // } // } // 此处链接授权后,会跳转到下方处理 // $url = $Wechat->get_authorize_url('http://twx.vjiankang.org/wsite/test/wxrurl','1'); $referer = $_GET['referer']; $referer = 'http://v.suninpay.com/index.php?g=Wap&m=Red_packet&a=index&id=1&token=wfzqmi1427969786&wecha_id=o7F8auDz4SGsyIkBov3pWzA2C4jE'; $callback = U('wxrurl', '', false, false, true); $appid = M('wxuser')->where(array('token' => $v_token))->getField('appid'); $oauth2->app_id = $appid; // 让他知道来源网址 // $callback = $callback . '&referer=' . $referer; $callback = $referer; echo $callback . '<br>'; $url = $oauth2->get_authorize_url($callback, 'snsapi_base', $v_token); echo '<a href=' . $url . '>授权</a>'; }