PHP 实现微信开放平台扫码登录

为了优化登录,减少用户操作,决定使用微信扫码登录

为了优化登录,减少用户操作,决定使用微信扫码登录,开发步骤如下

一、登录微信开放平台(https://open.weixin.qq.com/),创建应用申请AppID和AppSecret

PHP 实现微信开放平台扫码登录

二、拿到AppID和AppSecret 后 便可以开始开发了,创建一个唤起微信登录的页面,并跳转到微信扫码页面

    /*微信唤起登录*/
    public function index()
    {
        $type = input('type');
        $this->wxopenConfig = config('wxopen');
        if ($type == 'weixin') {
            $redirect_url = urlencode('http://' . $_SERVER['HTTP_HOST'] . '/snslogin/wx_login');
            $url = "https://open.weixin.qq.com/connect/qrconnect?appid=" . $this->wxopenConfig['appid'] . "&redirect_uri=" . $redirect_url . "&response_type=code&scope=" . $this->wxopenConfig['scope'] . "&state=STATE&connect_redirect=1#wechat_redirect";
            header('Location:' . $url);
        } else {
            echo 'hello word';
        }

    }
//Config.php配置文件
return [
    'wxopen'=>[
        'appid'=>'',
        'appsecret'=>'',
        'scope'=>'snsapi_login'//固定参数,保留即可
    ],
];

用户扫码完成后,微信会有一个同步回调,回调到你刚才设置的地址$redirect_url

    /*微信回调*/
    public function wx_login(){
        $this->wxopenConfig = config('wxopen');
        $code = $_GET['code'];
        //判断是否授权
        if (empty($code)){
            $this->error('授权失败');
        }
        $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->wxopenConfig['appid'] . '&secret=' . $this->wxopenConfig['appsecret'] . '&code=' . $code . '&grant_type=authorization_code';
        //获取token,为了获取access_token 如果没有就弹出错误
        $token = json_decode(file_get_contents($token_url));
        if (isset($token->errcode)) {
            echo '<h1>错误:</h1>' . $token->errcode;
            echo '<br/><h2>错误信息:</h2>' . $token->errmsg;
            exit;
        }
        $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=' . $this->wxopenConfig['appid'] . '&grant_type=refresh_token&refresh_token=' . $token->refresh_token;
        //获取access_token ,为了获取微信的个人信息,如果没有就弹出错误
        $access_token = json_decode(file_get_contents($access_token_url));
        if (isset($access_token->errcode)) {
            echo '<h1>错误:</h1>' . $access_token->errcode;
            echo '<br/><h2>错误信息:</h2>' . $access_token->errmsg;
            exit;
        }
        $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token->access_token . '&openid=' . $access_token->openid . '&lang=zh_CN';
        //获取用户信息
        $user_info = json_decode(file_get_contents($user_info_url));
        if (isset($user_info->errcode)) {
            echo '<h1>错误:</h1>' . $user_info->errcode;
            echo '<br/><h2>错误信息:</h2>' . $user_info->errmsg;
            exit;
        }
//这里转换为数组
        $rs = (array)$user_info;
        die($rs);
    }

到此已经获取到了微信用户信息,后续再加上自己的业务逻辑即可

原创文章,作者:ECHO陈文,如若转载,请注明出处:https://www.luweipai.cn/php/7854561/

  • 0