登录  /  注册
博主信息
博文 60
粉丝 0
评论 1
访问量 36042
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
微信网页授权
威灵仙的博客
原创
644人浏览过

微信网页授权登录分为四个步骤

1、第一步:用户同意授权,获取code

2、第二步:通过code换取网页授权access_token

3、第三步:刷新access_token(如果需要)

4、第四步:拉取用户信息(需scope为 snsapi_userinfo)

     首先个人号可以使用测试账号进行开发,并且获取到appid和appsecret这两个参数

     首先通过appid获取code

     

实例

<?php     //获取code  

  public function auth()     {         //var_dump(1);         //向微信服务器请求成功时 微信服务器回调的url地址,         //并且会以get方式带上code参数,此url地址必须是外网可访问的       

 $redirect = urlencode("http://99d52e5a.ngrok.io/index.php/index/weixin/userinfo");         $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".Config::get("wx.appid")."&redirect_uri=".$redirect."&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";         header("Location:" . $url); //跳转url地址     }


运行实例 »

点击 "运行实例" 按钮查看在线实例

获取code之后,通过code参数及其他已有参数换取access_token,此access_token不是普通的access_token,普通的access_token是通过appid和secret参数获取的,它适用于其他接口的调用,获取用户信息时的access_token是通过code和其他参数获取的,这点一定要区分开。

           

实例

<?php      //通过code 获取access_token 用于获取用户信息 

   public function auth_access_token($code)     {             $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".Config::get("wx.appid")."&secret=".Config::get("wx.appsecret")."&code=".$code."&grant_type=authorization_code";           //通过curl的get请求方式发起请求,请求成功返回的是json字符串             $json = $this -> curlRequest($url);               //将json字符串转为数组处理             $arr = json_decode($json,true);             //判断如果access_token不存在 则返回false             if (!isset($arr['access_token'])){            

    return false;             }             //返回整个数组 , 此数组有access_token 和openid              //注意:此access_token 不要做缓存,因为获取用户信息时是通过openid唯一确定用户的,每次都要从新获取         

   return $arr;     }

运行实例 »

点击 "运行实例" 按钮查看在线实例


实例

<?php      //获取用户信息     public function userinfo()     {     

   $code = input("get.code");  //回调成功后,接收code       

 $res = $this -> model -> auth_access_token($code); //通过code换取access_token         //如果获取access_token不成功或者用户刷新导致code丢失,则重定向再次获取code      

  if(!$res){             header('Location:http://99d52e5a.ngrok.io/index.php/index/weixin/auth');             exit();         }         $access_token = $res['access_token'];       

 $openid = $res['openid'];      

  $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";      

  $json = $this -> model -> curlRequest($url);  

      $arr = json_decode($json,true);     

   dump($arr);   //至此,获取到用户信息     }


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学