您现在的位置是:网站首页 > 心得笔记

PHP实现微信公众平台开发—提升篇核心内容:access_token

盛悦2019-02-18443人围观
简介本篇介绍了access_token这个通用的动态口令 另外讲解了两个接口,如何获取access_token 以及如何获取微信服务器地址

1、access_token —— 就是我们调用微信公众平台开放的一些接口的钥匙

要了解access_token,就必须要先了解appid,appsecret

1、access_token与appid、appsecret的关系

appid和appsecret是什么?
当你在微信公众平台注册微信公众账号时,微信公众平台为你生成的appid和appsecret。这两个值就是你在微信公众平台的唯一标识,相当于你在微信公众平台的身份证。

access_token又是什么?它与appid、appsecret有什么关系?
appid和appsecret就是用来产生access_token,access_token就是一个动态口令,它存在一个时间性  就是一段时间内有效



2、access_token作为动态口令,有2大特性:
1.唯一有效性:有个时间限制(在现在微信公众平台开发手册上暂定2小时),需定时刷新

2.全局有效性:你要调微信公众平台的一些接口,就必须要带access_token这个口令,所以说它对于我们这个全局(项目),都是有效的,所以你在第一次通过appid和appsecret去调用到access_token后,需要根据它的时效性做一个存储(session memcached等)

sccess_token 微信公众平台每天提供的调用次数是2000次,所以在使用微信公众平台接口的时候,尽量要从缓存中取,如果取不到,再通过appid和appsecret去取



2、获取access_token

2.1、curl

获取access_token,就需要用到我们的微信接口,在讲微信接口之前,先了解下PHP中一个强大的工具  curl,它其实在网站采集以及统计 调接口方面是非常常用的工具

写一个简单的curl实例:

public function http_curl () {
  //1、初始化curl
  $ch  = curl_init();
  $url = 'https://www.baidu.com/';
  //2、设置参数
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  //3、调用接口
  $res = curl_exec($ch);
  //4、关闭curl
  curl_close($ch);
  var_dump($res);
}

执行结果:

微信图片_20190218133553(1).png


2.2、获取access_token接口

appid和appsecret如何获取access_token? 

参考官方文档https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183

public function getWxAccessToken () {
  //1、初始化curl
  $ch = curl_init();
  $appid     = 'wxd5f96db9ab91exx';
  $appsecret = 'd1afb61735625bca251884cc0d1xxxxx';
  $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='. $appid . '&secret=' . $appsecret;
  
  //2、设置curl
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  //3、调用接口
  $res = curl_exec($ch);
  //4、关闭curl
  if (curl_errno($ch)) {
    var_dump(curl_error($ch));
  }
  curl_close($ch);
  
  注意:微信接口返回的都是json格式的数据!!!
  $arr = json_decode($res, true);
  var_dump($arr);
  注意:要想成功获取到access_token 还需将IP填写到IP白名单中
}


执行结果如下:

2(1).png


2.3、获取微信服务器ip地址接口

参考官方文档https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140187

public function getWxServerIp () {
    $access_token = '18_r8OXpBoau_p1m9TxEWq7sKzt_m1tKbf-3pT83vKc1Q49-oxrraJ3xgsGr0Xy5coDjZGoAp_Cs9FZJ8HLuzhYuOoqhVNNuco53o_Q0dUbaqjrXny1LX3HQTkoBmj8CEJFQA-6DW1E8gAa6Ou0SUPeAJALNI';

        $url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=' . $access_token;

        //1.初始化curl
        $ch = curl_init();

        //2.设置curl参数
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        //3.调用接口
        $res = curl_exec($ch);

        //4.关闭curl
        if (curl_errno($ch)) {
            var_dump(curl_error($ch));
        }
        curl_close( $ch );

        $arr = json_decode($res, true);

        echo '<pre>';
        var_dump($arr);
        echo '</pre>';
}

执行结果:

3(1).png