zoukankan      html  css  js  c++  java
  • 微信接口开发之高级篇系列【网页授权接口】

    【1】带微信帐号的手机
     
    【2】打开浏览器,这里以IE为例。
    【3】用手机登录你的微信,使用微信中的“扫一扫”功能,扫描上面网页中的二维码。在手机上会出现以下界面:
    注意:
    这里的填写只要域名就可以里,不要http和以及域名下面的方法哦!
    【4】然后在该域名下面定义一个控制器,添加方法即可
    【5】方法一:跳转获取Code【需要微信登陆或者扫描的页面】
    需要的参数:
    (1)appid      (2)redirect_uri(这里需要urlencode编码)
    案例代码:
    这里的:Scope为snsapi_base
    /*
    * 定向的跳转,为了获取Code
    */
    public function getcodeAction(){
    $this
    ->view->disable();
    $appid = 'wx94c43716d8a91f3f';
    $redirect_uri = urlencode('http://ford4s.amailive.com/redis/getaccesstoken');

    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=1234#wechat_redirect";
    header('location:'.$url);
    }
    【6】方法二:这个方法也就是第一个方法要跳转的回调函数,这个方法名就在方法一的URL地址中:
    需要跳转的方法:
    实例代码:
    public function getaccesstokenAction(){
    $this->view->disable();
    $appid = 'wx94c43716d8a91f3f';
    $appsecret = 'd4624c36b6795d1d99dcf0547af5443d';
    /*回调的时候自带的这个参数*/
    $code = $_GET['code'];

    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $data = curl_exec($ch);
    curl_close($ch);
    /*这里接收到的data数据是Json格式的,我在这转换成数组了*/
    $result = json_decode($data,true);
    /*取出数组中的access_token这个值*/
    $access_token = $result['access_token'];
    $expires_in = $result['expires_in'];
    /*拿到Openid就知道是哪个用户了,例如:参加活动次数,统计量的统计,没参加一下就写一次,在这里可以写入数据库*/
    $openid = $result['openid'];
    echo $openid;
    }
    http://ford4s.amailive.com/redis/getcode【5】把域名和方法一生成一个二维码测试:
     
     
    【6】返回信息:
    {
       "access_token":"ACCESS_TOKEN",
       "expires_in":7200,
       "refresh_token":"REFRESH_TOKEN",
       "openid":"OPENID",
       "scope":"SCOPE"
    }
    【7】获取用户信息:
    (1)方法一:用户登陆或者扫描的方法
    这里的:Scope为snsapi_userinfo
    public function getcodeAction(){
    $this
    ->view->disable();
    $appid = 'wx94c43716d8a91f3f';

    /*基本授权 方法跳转地址*/
    $redirect_uri = urlencode('http://ford4s.amailive.com/redis/getuserinfo');

    /*高级授权 snsapi_userinfo*/
    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=1234#wechat_redirect";
    header('location:'.$url);
    }
    (2)方法二:获取用户详细信息,【这个方法是在第一个跳转页面的时候加载域名后面的那个方法哦!】
    public function getUserInfoAction(){
    $this->view->disable();
    $appid = 'wx94c43716d8a91f3f';
    $appsecret = 'd4624c36b6795d1d99dcf0547af5443d';
    /*回调的时候自带的这个参数*/
    $code = $_GET['code'];

    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $data = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($data,true);
    /*取出数组中的access_token这个值*/
    $access_token = $result['access_token'];
    $openid = $result['openid'];
    $URL2 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$URL2);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $info = curl_exec($ch);
    curl_close($ch);
    var_dump($info);
    }
    (3)打印结果:
    (4)单独获取access_token方法:
    参数说明:
         公众号可以使用AppID和AppSecret调用本接口来获取access_token
    案列代码:
    /* AppID和AppSecret调用本接口来获取access_token */
    public function getaccesstokenAction(){
    $this->view->disable();
    $appid = 'wx94c43716d8a91f3f';
    $appsecret = 'd4624c36b6795d1d99dcf0547af5443d';

    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret."";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $data = curl_exec($ch);
    curl_close($ch);
    /*这里接收到的data数据是Json格式的,我在这转换成数组了*/
    $result = json_decode($data,true);
    /*取出数组中的access_token这个值*/
    $access_token = $result['access_token'];
    return $access_token;
    }



     
     
     
     
     
     
     
  • 相关阅读:
    编写C#程序的IDE
    MacBook Pro装Win7后喇叭没有声音
    MacBook Pro装Win7后喇叭没有声音
    MacBook Pro装Win7后喇叭没有声音
    MacBook Pro装Win7后喇叭没有声音
    Linux从入门到精通系列之NFS
    Linux从入门到精通系列之NFS
    Linux从入门到精通系列之NFS
    Docker之docker设置系统的环境变量
    mq put 消息到远程队列
  • 原文地址:https://www.cnblogs.com/tinywan/p/5857990.html
Copyright © 2011-2022 走看看