PHP语言:微信开放平台PC端扫码登录

需求: 微信扫码时每次需要弹窗确认效果。

微信开放平台 :创建网站应用,绑定公众号,用于打通公众号用户数据。
注意域名填写规范,不带协议。eg:www.xxx-test.com

页面嵌套扫码登录二维码 部分代码如下:

<div id="login_qrcode"></div>
<script type="text/javascript" src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

<script>
	window.onload = function () {

		var appId = $("#open_appid").val();
		var state = $("#unique_id").val();
		var redirectUri = $("#open_redirect_uri").val(); // www.xxx-test.com/api/openWXLogin
		var scope = 'snsapi_login';
		//微信登录二维码
		var obj = new WxLogin({
			id: "login_qrcode",
			appid: appId,
			scope: scope,
			redirect_uri: redirectUri,
			state: state,
			style: "",
			href: ""
		});
	}
</script>

服务器端部分代码:

    public function openWXLogin()
    {
        $code = $request->get("code");
        if (empty($code)) {
            echo  "授权失败,code信息不存在";
            exit;
        }
        //通过code获取用户信息
        $rs = pc_open_userinfo($code);
        
        //其他业务流程代码
        ...
 }
function pc_open_userinfo($code)
    {
        $appid = '';// 网站应用的appid
        $secret = '';//网站应用的secret
        if (empty($code)) {
           echo  "授权失败,code信息不存在";
            exit;
        } else {
            $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $secret . '&code=' . $code . '&grant_type=authorization_code';
            
            //获取token,为了获取access_token 如果没有就弹出错误
            $token = json_decode(curl_get($token_url), true);
            if (isset($token['errcode'])) {
                echo $token['errcode'];
                echo '<br/>' . $token['errmsg'];
                exit;
            }
            $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=' . $appid . '&grant_type=refresh_token&refresh_token=' . $token['refresh_token'];
            
            //获取access_token ,为了获取微信的个人信息,如果没有就弹出错误
            $access_token = json_decode(curl_get($access_token_url), true);
            if (isset($access_token['errcode'])) {
            	echo $access_token['errcode'];
                echo '<br/>' . $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(curl_get($user_info_url), true);
            if (isset($user_info['errcode'])) {
            	echo $user_info['errcode'];
                echo '<br/>' . $user_info['errmsg'];
                exit;
            }
            //这里转换为数组
            $user_data = (array)$user_info;
            return $user_data;
        }
    }
/**
 * curl以get方式请求
 */
if (!function_exists('curl_get')) {
    function curl_get($url)
    {
        //初始化curl
        $ch = curl_init();
        //设置超时
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        //运行curl
        $res = curl_exec($ch);
        curl_close($ch);
        return $res;
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值