E企盈营销工具技术服务商 热线:4006-838-530

微信小程序登录授权

E企盈直播平台营销卖货系统

最近在弄一款小程序,今天得空,把登录授权这一块整理一下,网上搜的话,也有很多,但总觉得自己在项目上使用后,才理解的更加透彻。前端的逻辑:首次登录->获取rd3_session->拿着rd3检查是否过期(当然也可以设置为永久,这取决于后端设置)->如果过期,则再次登录;后端主要的也就是登录和检测是否过期。下面是后台的code:/**     * 小程序登录     */   public function onlogin(){        $code = I(‘code’);        $appId =”xxxx”;        $appSecret=”xxx”;        $url = “https://api.weixin.qq.com/sns/jscode2session?appid=$appId&secret=$appSecret&js_code={$code}&grant_type=authorization_code”;       $arr = $this->vegt($url);// 返回值:[session_key] => PzY6sFpTsKKPrpl0BtEH2w== [openid] => osIjD5Pa5Z6GbonT5U-Z7Ed4kr6U       $rd3_str = $this->randomFromDev(16);        $rd3_str = trim($rd3_str);       //放入数据库       $find = D(‘users’)->where(‘openid’,$arr[‘openid’])->find();       if($find){           //更新           $list[‘rd3_session’] = $rd3_str;           $save = D(‘users’)->where(‘openid’,$arr[‘openid’])->save($list);       }else{           //新增           $list[‘openid’] = $arr[‘openid’];           $list[‘rd3_session’] = $rd3_str;           $insert = D(‘users’)->add($list);       }       die(json_encode([‘rd3_session’=>$rd3_str]));    }    /**     * 检验是否过期     */    public function check_3rdsession(){        $rd3_session_str = I(‘rd3_session’);        $rd3_session = D(‘users’)->where(‘rd3_session’,$rd3_session_str)->find();        if($rd3_session){            $rd3 = 1;        }else{            $rd3 = -1;        }        die(json_encode($rd3));    }    /**     * 写入用户信息     * update_info 更新用户信息     */    public function setUserInfo(){        $rd3_session_str = I(‘rd3_session’);        $update[‘nickname’] =I(‘nickName’);        $update[‘sex’] = I(‘gender’);        $update[‘head_pic’] = I(‘avatarUrl’);        $find = D(‘users’)->where(‘rd3_session’,$rd3_session_str)->save($update);        if($find){            die(json_encode([‘code’=>1,’msg’=>’ok’]));        }else{            die(json_encode([‘code’=>0,’msg’=>’error’]));        }    }其中用到了两个函数:    /**     * 通过此方法获取随机数     */    public function randomFromDev($len)    {        $fp = @fopen(‘/dev/urandom’,’rb’);        $result = ”;        if ($fp !== FALSE) {            $result .= @fread($fp, $len);            @fclose($fp);        }        else        {            trigger_error(‘Can not open /dev/urandom.’);        }// convert from binary to string        $result = base64_encode($result);// remove none url chars        $result = strtr($result, ‘+/’, ‘-_’);// Remove = from the end        $result = str_replace(‘=’, ‘ ‘, $result);        return $result;    }    public function vegt($url){        $info = curl_init();        curl_setopt($info,CURLOPT_RETURNTRANSFER,true);        curl_setopt($info,CURLOPT_HEADER,0);        curl_setopt($info,CURLOPT_NOBODY,0);        curl_setopt($info,CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($info,CURLOPT_SSL_VERIFYHOST, false);        curl_setopt($info,CURLOPT_URL,$url);        $output= curl_exec($info);        curl_close($info);        return json_decode($output, true);    }如有问题,欢迎指正!小程序

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序登录授权
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏