分享

获取access_token - 傻瓜式微信开发教程7 - 耗子原创

 取经悟能 2015-10-10
本帖最后由 moremorefun 于 2015-8-18 14:39 编辑

现在我们尝试首次调用微信提供给我们的API.


微信的API大部分是需要`access_token`作为验证字段了,
那我们首先尝试获取`access_token`.


我们这次帖子的主要目的是在用户发送给我们的公众号一个文本消息的时候返回给用户我们获取到的access_token.


根据我们在[回复简单的文本消息 - 傻瓜式微信开发教程4 - 耗子原创]中的说明,
我们对用户的文本消息在`index.php`页面中的`onText()`函数中进行处理.
微信关于获取`access token`的说明在这里: http://mp.weixin.qq.com/wiki/11/0e4b294685f817b95cbed85ba5e82b8f.html


在说明中我们可以看到,获取`access_token`需要提供`appid`和`secret`两个参数,
而之前我们的Wechat-php库中没有写入secret参数,所以我们还要对`Wechat.php`做一些修改,
主要是为了保存`appid`和`secret`两个字段.


所以我们修改的`Wechat.php`的代码为:

  1. <?php
  2.   class Wechat {
  3.     // ....
  4.     // ....
  5.     // ....
  6.     protected $encrypted = false;
  7.     protected $appid = '';
  8.     protected $appsecret = '';

  9.     // 添加appsecret参数
  10.     public function __construct($config=array('token'=>'', 'aeskey'=>'', 'appid'=>'', 'appsecret'=>'', 'debug' => FALSE)) {

  11.       $token = $config['token'];
  12.       $aeskey = $config['aeskey'];
  13.       $appid = $config['appid'];
  14.       $debug = $config['debug'];
  15.       // 将两个参数储存在实例中
  16.       $this->appid = $config['appid'];
  17.       $this->appsecret = $config['appsecret'];

  18.       // ...
  19.       // ...
  20.       // ...
  21.     }
  22.   }
复制代码

我们的调用函数为:

  1. <?php
  2. /**
  3. * 微信开发者社区: http:// 原创首发
  4. *
  5. * 微信公众平台 PHP SDK 示例文件
  6. */

  7.   require('wechat/Wechat.php');

  8.   /**
  9.    * 微信公众平台演示类
  10.    */
  11.   class TestWechat extends Wechat {
  12.     /**
  13.      * 收到文本消息时触发,回复收到的文本消息内容
  14.      *
  15.      * @return void
  16.      */
  17.     protected function onText() {
  18.       // 获取到 appid 和 appsecret
  19.       $appid = $this->appid;
  20.       $appsecret = $this->appsecret;
  21.       // 构建获取access_token的url
  22.       $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
  23.       // 构建http请求并执行
  24.       $ch = curl_init();
  25.       curl_setopt($ch, CURLOPT_URL, $url);
  26.       curl_setopt($ch, CURLOPT_HEADER, false);
  27.       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  28.       $result=curl_exec($ch);
  29.       curl_close($ch);
  30.       // 解析返回的json数据
  31.       $jsoninfo = json_decode($result);
  32.       // 读取json中的access_token字段
  33.       $access_token = $jsoninfo->access_token;
  34.       $expires_in = $jsoninfo->expires_in;
  35.       // 将获取到的access_token作为文本信息返回
  36.       $this->responseText("access_token: '{$access_token}'\nexpires_in: '{$expires_in}'");
  37.     }
  38.   }

  39.   // 这里调用新的
  40.   $wechat = new TestWechat(array(
  41.     'token'     => 'xxxx',              // 更新为自己的
  42.     'aeskey'    => 'xxxx',             // 更新为自己的
  43.     'appid'     => 'xxxx',              // 更新为自己的
  44.     'appsecret' => 'xxxx',          // 更新为自己的
  45.     'debug'     => true
  46.     ));
  47.   $wechat->run();
复制代码

附件中有整个代码的压缩包
游客,如果您要查看本帖隐藏内容请回复


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多