博客列表 >微信网页授权

微信网页授权

威灵仙的博客
威灵仙的博客原创
2018年06月03日 18:09:02671浏览

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

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);   //至此,获取到用户信息     }


上一条:phpexecl的运用下一条:6月1日作业
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议