$config['app_id'], 'appsecret' => $config['app_secret'], ); $this->wechat = new \vendor\Wechat($options); } /** * 获取授权地址 */ public function redirect($callback_url) { return $this->wechat->getOauthRedirect($callback_url, 'wechat_oauth'); } /** * 回调用户数据 */ public function callback($callback_url, $code) { if (! empty($code)) { $token = $this->wechat->getOauthAccessToken(); $userinfo = $this->wechat->getOauthUserinfo($token['access_token'], $token['openid']); if (! empty($userinfo)) { $_SESSION['openid'] = $userinfo['openid']; $data = array( 'openid' => basename(__FILE__, '.php') . '_' . $userinfo['openid'], 'name' => $userinfo['nickname'], 'sex' => $userinfo['sex'], 'avatar' => $userinfo['headimgurl'] ); //更新粉丝信息 $controller = '\apps\wechat\controllers\IndexController'; if(class_exists($controller))$this->updateInfo($userinfo); return $data; } else { return false; } } else { return false; } } /** * 粉丝信息更新 */ private function updateInfo($userinfo = array()){ if(!empty($userinfo)){ $info = model()->table('wechat_user')->field('openid, ect_uid')->where(array('openid'=>$userinfo['openid']))->find(); if(!empty($info)){ $ect_uid = 0; if(empty($info['ect_uid']) && isset($userinfo['unionid'])){ $ect_uid = model()->table('wechat_user')->field('ect_uid')->where(array('unionid'=>$userinfo['unionid']))->one(); } $userinfo['ect_uid'] = $ect_uid; model()->table('wechat_user')->data($userinfo)->where(array('openid'=>$info['openid']))->update(); } else{ $ect_uid = 0; if(isset($userinfo['unionid'])){ $ect_uid = model()->table('wechat_user')->field('ect_uid')->where(array('unionid'=>$userinfo['unionid']))->one(); } $userinfo['ect_uid'] = $ect_uid; $userinfo['wechat_id'] = 1; model()->table('wechat_user')->data($userinfo)->insert(); } } return false; } }