微信扫码登录

1 在开放平台-网页应用申请下来

2 设置开放平台应用里的回调地址(前端页面的线上地址)

3 前端扫码后拿到code传给后端

 <div id="login_container"></div>

<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

<script>
   var loginUrl = "http://" + window.location.host + "/index.php?route=common/home/weChatLogin";
   //console.log(loginUrl);
   var obj = new WxLogin({
      id: "login_container",//存放二维码框
      appid: "wx6b2",
      scope: "snsapi_login",
      redirect_uri: encodeURIComponent(loginUrl),
      state: Math.ceil(Math.random()*1000),
      style: "black",
      href: ""});
</script>
/**
     * 网页登录
     */
    public function web_qrcode_login() {
        
        $params = $this->request->getMore([
            ['code',''],
        ]);
        $code = $params['code'];
        
        $AppID = sysconfig('wx_public','wx_web_appid');
        
        if (!isset( $code )){
            $redirect_uri="http://bc.bckj1.com/";
            $redirect_uri=urlencode($redirect_uri);
            $url = "https://open.weixin.qq.com/connect/qrconnect?appid=" . $AppID."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";
            //请求返回的结果(实际上是个html的字符串)
            $result = file_get_contents($url);
            //替换图片的src才能显示二维码
            $result = str_replace("/connect/qrcode/", "https://open.weixin.qq.com/connect/qrcode/", $result);
            $data = [
                "result" => $result,
            ];
            return app('json')->success( 'ok' , $data );
        }else{
            $AppSecret = sysconfig('wx_public','wx_web_secret_key');
            
            //  获取access_token
            $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $AppID . "&secret=" . $AppSecret . "&code=" . $code . "&grant_type=authorization_code";
            $authorization_arr = file_get_contents( $url );
            $authorization_arr = json_decode( $authorization_arr, true );
            
            //  获取用户信息
            $access_token = $authorization_arr['access_token'];
            $openid = $authorization_arr['openid'];
            $url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid . "&lang=zh_CN";
            $userinfo = file_get_contents( $url );
            $userinfo = json_decode( $userinfo, true );
            
            //参数样式$userinfo用户信息结构
            
            //  注册登录
            $loginServices = app()->make(LoginServices::class);
            $data = $loginServices->pcWechatLogin( $userinfo );
            return app('json')->success( '登录成功' , $data );
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值