/** * 微信的登录页面. */ 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)); }