• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

微信小程序登陆授权

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

小程序前端代码

function WXlogin(){
  wx.login({
    success: function (code) {
      wx.getUserInfo({
        success:function(userInfo){
            //发起请求
            wx.request({
              url: domain+\'wxopen/wxapp/login\',
              method:"POST",
              data:{
                code: code.code,
                encryptedData: userInfo.encryptedData,
                iv: userInfo.iv,
                rawData: userInfo.rawData,
                signature: userInfo.signature,
                appid:extConfig.appid
              },
              success:function(res){
                console.log(res,\'login\')
                wx.setStorageSync(\'session_3rd\', res.data);//存token
              }
            })
        }
      })
      
    }
  });
}

//重新登陆更新
function reLogin(sess_3rd){
  console.log(sess_3rd,\'s3rd\')
  //发起请求
  wx.request({
    url: domain + \'wxopen/wxapp/reLogin\',
    method: "POST",
    data: {
      session: sess_3rd,
    },
    success: function (res) {
      console.log(res, \'relogin\')
      if(res.data == 0){
        WXlogin();//重新登陆
      }else{
        wx.setStorageSync(\'session_3rd\', res.data);//存token
      }
      
    }
  })
}

  

后端PHP代码

 

function login(){
        $code = input(\'code\');//登陆凭证
        $encryptedData = input(\'encryptedData\');//
        $iv = input(\'iv\');//
        $rawData = input(\'rawData\');//
        $signature = input(\'signature\');//
        $appid = input(\'appid\');


        //第三方token,换取session_key
        $comp_token = $this->component->getAccessToken();
        $url =\'https://api.weixin.qq.com/sns/component/jscode2session?appid=\'.$appid.\'&js_code=\'.$code.\'&grant_type=authorization_code&component_appid=\'.$this->appid.\'&component_access_token=\'.$comp_token;

        $result = send_get($url);
        $result = json_decode($result,true);
        trace($result,\'登陆返回\');

        //根据业务需要对数据包进行签名校验,确保数据的完整性。
        $signature2 = sha1( $rawData.$result[\'session_key\']);
        if ($signature != $signature2){
            return [\'msg\'=>\'签名检验失败\',\'status\'=>0];
        }

        //解密获得用户的完整敏感信息
        $pc = new wxappBizDataCrypt($appid, $result[\'session_key\']);

        $errCode = $pc->decryptData($encryptedData, $iv, $data );

        if ($errCode == 0) {
            $data = json_decode($data,true);
            $data[\'appid\'] = $data[\'watermark\'][\'appid\'];
            $session_3rd = bin2hex(random_bytes(9));

            $data[\'session_3rd\'] = $session_3rd;

            //检查用户是否存在,进行增加更新操作
            $userInfo = new UserInfo();
            $users = $userInfo::get([\'openid\'=>$result[\'openid\']]);
            if ($users){
                $ret = $userInfo->allowField(true)->isUpdate(true)->save($data,[\'openid\'=>$result[\'openid\']]);

            }else{
                $ret = $userInfo->allowField(true)->isUpdate(false)->save($data);
            }

            if ($ret)
                return $session_3rd;
        }
        return 0;
    }


    //登陆过期,重新登陆
    function reLogin(){
        $session = input(\'session\');
        $users = $this->user->where([\'session_3rd\'=>$session])->find();
        if ($users){
            $session_3rd = bin2hex(random_bytes(9));
            $ret = $this->user->where(\'id\',$users[\'id\'])->update([\'session_3rd\'=>$session_3rd]);//更新3rd

            return $session_3rd;
        }else{
            return 0;
        }
    }

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap