网站实现微信扫码登录 php==1

微信开放平台账号一个,必须是商户,不然你也开不了

 

1.在开放平台创建应用,并设置回调地址(域名即可)

 

2.生成二维码,前端代码,用户扫码后会给你的回调地址发送code

   <span id="login_container"></span>
    <script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
    <script> var obj = new WxLogin({
        id: "login_container",
        appid: "appid",你的appid
        scope: "snsapi_login",
        redirect_uri: encodeURIComponent("你的回调地址(域名必须和你在开放平台的一致)"), state: Math.ceil(Math.random()*1000),
        style: "black",
        href: ""});
    </script>

3.根据code获取  access_token 和 openid ,再用他们获取用户信息 代码如下

 public function login(){
        $code = input('code');
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid= 你的appid &secret= 你的AppSecret &code=".$code."&grant_type=authorization_code";

        $access_token = $this->curl_get($url);


        if (!$access_token || isset($access_token['errcode'])){
            return json(['code'=>0,'message'=>'登录失败']);
        }

        $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token['access_token']."&openid=".$access_token['openid'];

        $user = $this->curl_get($url);

        if (!$user){
            return json(['code'=>0,'message'=>'登录失败']);
        }
        var_dump($user);

//        ["openid"]=> string(28) ""
//        ["nickname"]=> string(1) "" 普通用户昵称
//        ["sex"]=> int(1)  普通用户性别,1为男性,2为女性
//        ["language"]=> string(5) "zh_CN"
//        ["city"]=> string(0) ""  普通用户个人资料填写的城市
//        ["province"]=> string(0) ""    普通用户个人资料填写的省份
//        ["country"]=> string(2) "CN"  国家,如中国为CN
//        ["headimgurl"]=> string(128) ""  头像
//        ["privilege"]=> array(0) { }  用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
//        ["unionid"]=> string(28) ""   用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

    }        

    protected function curl_get($url){

        $header = array(
            'Accept: application/json',
        );
        $curl = curl_init();

        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, $url);

        //设置头文件的信息作为数据流输出
        curl_setopt($curl, CURLOPT_HEADER, 0);

        // 超时设置,以秒为单位
        curl_setopt($curl, CURLOPT_TIMEOUT, 1);

        // 超时设置,以毫秒为单位
        // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);

        // 设置请求头
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

        //设置获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

        //执行命令
        $data = curl_exec($curl);

        // 显示错误信息
        if (curl_error($curl)) {
            return false;
        } else {
            // 打印返回的内容
            return json_decode($data,true);
        }
    }

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值