public function beforeAction($action) { $session = Yii::$app->session; //$session->removeAll(); //$session->set('openId','ow-bOvjH7CpKQtxsvjJuRmg6-g-k'); if ($user = $session->get('user')) { if ($user['role'] == Users::ROLE_A) { //用户必须是A级用户才能登录前台,避免后台登录了前台也能进行登陆 return parent::beforeAction($action); } } if ($openId = $session->get('openId')) { $session->set('user', Users::findByWeiXin($openId)); return parent::beforeAction($action); } $request = Yii::$app->request; $state = $request->get("state"); $current_url = Url::current([], true); //认证后跳转至当前网址 if ($state == 'YUN') { //需要与getAuthorizeUrl($redirect_uri)中定义的一致,用户认证后回调操作如下 $code = $request->get("code"); if ($code) { //code存在表示用户允许授权 $result = WeiXinFunctions::getAuthAccessToken($code); $openId = $result->openid; $access_token = $result->access_token; //授权成功后继续执行后面的action $session->set('openId', $openId); $session->set('user', Users::findByWeiXin($openId)); return parent::beforeAction($action); //header("Location:$current_url"); } else { echo "用户不允许授权"; return false; } } $redirect_uri = urlencode($current_url); //认证后跳转至当前网址 $url = WeiXinFunctions::getAuthorizeUrl($redirect_uri); header("Location:{$url}"); return false; }
?> <script src="./js/js-sdk.js"></script> <script> wx.config({ debug: false, appId: '<?php echo WeiXinFunctions::getAppId(); ?> ', timestamp: <?php echo $timestamp; ?> , nonceStr: 'yundou-js', signature: '<?php echo WeiXinFunctions::generateJsSignature($currentUrl, $timestamp); ?> ', jsApiList: [ 'onMenuShareTimeline', //分享到朋友圈 'onMenuShareAppMessage', //发送给朋友 'onMenuShareQQ', //分享到QQ 'onMenuShareWeibo', //分享到Weibo 'onMenuShareQZone' //分享到 QQ 空间 ] }); wx.ready(function(){ var json = { title: '晒成绩啦!我参加‘<?php echo $session->get("majorJob"); ?>
/** * 微信用户关注将用户信息导入数据库 * @param $openId */ public static function wxSubscribe($openId) { $user = Users::find()->where(['weixin' => $openId])->one(); if (!$user) { $user = new Users(); $user->weixin = $openId; $userInfo = WeiXinFunctions::getUserInfo($openId); $user->role = Users::ROLE_A; $user->weixin = $userInfo->openid; $user->nickname = $userInfo->nickname; $user->userIcon = $userInfo->headimgurl; $user->state = Users::STATE_NORMAL; if ($userInfo->sex == 1) { $user->sex = '男'; } elseif ($userInfo->sex == 2) { $user->sex = '女'; } else { } $user->save(); } }
public static function generateJsSignature($url, $timestamp) { $wx = WeiXinFunctions::getInstance(); return $wx->generateJsSignature_in($url, $timestamp); }