Esempio n. 1
0
 /**
  * 微信的登录页面.
  */
 public function login()
 {
     if (empty($this->request->query['code'])) {
         // TODO 用户不授权
         exit;
     }
     $response = WeixinUtil::get_oauth2_response($this->request->query['code']);
     if (empty($response)) {
         // TODO
         exit;
     }
     $weixin_media_id = intval($this->request->query['media']);
     $oauth_weixin_user = OauthWeixinUsers::find('first', array('conditions' => array('weixin_media_id' => $weixin_media_id, 'openid' => strval($response->openid))));
     if (empty($oauth_weixin_user)) {
         // 用户没有经过register步骤而是直接login的, 这个时候没有绑定到weixin_user
         $user_info = WeixinUtil::get_oauth2_user_info($response->access_token, $response->openid);
         if (empty($user_info)) {
             // TODO 获取用户信息出错
             exit;
         }
         if (empty($user_info->headimgurl)) {
             $user_info->headimgurl = 'http://weixiao.qq.com/upload/avatar/default-avatar.jpg';
         }
         $oauth_weixin_user = OauthWeixinUsers::create();
         $oauth_weixin_user->weixin_media_id = $weixin_media_id;
         $oauth_weixin_user->openid = $user_info->openid;
         $oauth_weixin_user->nickname = $user_info->nickname;
         $oauth_weixin_user->avatar_image = $user_info->headimgurl;
         $oauth_weixin_user->weixin_user_id = 0;
         $oauth_weixin_user->modified_at = DateUtil::now();
         $oauth_weixin_user->save();
     }
     // 让该用户登录
     OauthWeixinUserService::after_login($oauth_weixin_user->to('array'));
     $ref_url = UrlUtil::get_safe_redirect_url($this->request->query['ref_url']);
     return $this->redirect($ref_url, array('exit' => true));
 }