Пример #1
0
 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();
         }
     }
 }
Пример #2
0
 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>';
 }