PHP获取微信二维码,扫码登录网站

前两天做了一个使用微信第三方的帐号,扫码登录网站。现在把原理讲解一下。

本质上还是调取接口,通过给接口传参数,然后获取返回值。前提,你得在微信开发者平台上申请了创建网站应用,并且获取了appid和secrectid 。废话不多说了,直接上代码:


首先用户点击登录界面上的微信图标的连接地址向本机的后台发送了请求。

class ClientUser {

 public function actionWeilogin(){
       $AppID = '自己的AppID';
       $AppSecret = '自己的AppSecret';
       $callback ='client-user/weilogins';
      $state  = md5(uniqid(rand(), TRUE));
  
      $session = Yii::$app->session;
      $session->set('wx_state',$state);
      $callback = urlencode($callback);
      $wxurl = "https://open.weixin.qq.com/connect/qrconnect?appid=".$AppID."&redirect_uri={$callback}&response_type=code&scope=snsapi_login&state={$state}#wechat_redirect";
      return $this->redirect($wxurl);
    }

//封装的curl post 请求
    public function curls($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_URL, $url);
        $json =  curl_exec($ch);
        curl_close($ch);
        $arr=json_decode($json,1);
        return $arr;
    }

//微信登录返回值接口
    public function actionWeilogins(){
          $AppID = '自己的AppID';
         $AppSecret = '自己的AppSecret';
        //获取用户的openid
        $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$AppID.'&secret='.$AppSecret.'&code='.$_GET['code'].'&grant_type=authorization_code';
        $arr= $this->curls($url);
        //获取用户的详细信息
        $urls='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';
        $arrs=$this->curls($urls);

       var_dump($arrs); // 这个是获取的是微信返回给我们的用户的个人的信息


            }
        
    }

备注:我是用yii2 框架做的


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘海舰010

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值