您的位置:首页 > 理论基础 > 计算机网络

PHP7.0微信公众平台开发2: https_request()和getAccessToken()

2017-08-28 12:47 351 查看

PHP7.0微信公众平台开发2: https_request()和getAccessToken()

1. 抓获网页数据的函数https_request()

2. 获取access_token的函数:getAccessToken()

3. 测试是否获取到access_token

这两个函数是比不可少的,日后在调用任何微信接口时都会要调用这两个函数。

1. 抓获网页数据的函数https_request()

在上一篇中的wechat.php中继续添加函数http_request():

public function https_request($url,$type,$res,$arr){
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

if($type == 'post'){    //type可以为“get”或“post”
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
}

$output = curl_exec($ch);
curl_close($ch);

if($res == 'json'){    //res可以是“json”或"xml"
return json_decode($output,true);
}
}


2. 获取access_token的函数:getAccessToken()

1)获得appid和appsecret

当申请了一个订阅号或者测试号后,微信平台会提供一个appid和appsecret, 由这两个进行验证随机生成access_token,从而才能调用微信的接口。

订阅号的appid和appsecret还是在“基本配置”中设置,但是一旦设置以后,网页上只会显示appid,不会再显示appsecret,所以如果设置好后请截图或者复制成文本记录下来,如果忘记可以重置,如图:



测试号的appid和appsecret在“开发者工具”-> “公众平台测试帐号”中,注册完测试号后,就会自动生成appid和appsecret,且两个都一直显示,如图:



2) 获得微信服务器定义的获取access_token的URL与请求方式

所有接口的请求方式,UTL和数据格式可在“微信公众平台开发者文档中查看”(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183)。



3)添加代码

在上一篇中的wechat.php中继续添加函数getAccessToken():

public function getAccessToken(){
if($_SESSION['access_token'] && $_SESSION['expire_time']>time()){
return $_SESSION['access_token'];
}
else{  //appid,appsecret,url分别见上面的图
$appid = 'wx1786********4597';
$appsecret = '9658e522*************bbe5f0c229f';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
$res = $this->https_request($url,'get','json','');    //调用上面的http_request()获取网页数据
$access_token = $res['access_token'];

$_SESSION['access_token'] = $access_token;
$_SESSION['expire_time'] = time()+7200;

return $access_token;
}
}


3. 测试是否获取到access_token

执行PHP脚本获取access_token

//wechat.php

<?php
define("TOKEN", "peng");
$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET['echostr'])) {
$wechatObj->showAccessToken();    //本次执行showAccessToken()函数来显示access_token
}else{
$wechatObj->valid();
}

class wechatCallbackapiTest
{
private $access_token;

public function __construct(){    //构造函数中初始化access_token
$this->access_token = $this->getWxAccessToken();
}

public function showAccessToken(){    //在浏览器中输出随机生成的access_token
echo "tocken = ".$this->access_token;
}

public function valid()
{
//略,在上一篇中有代码
}
private function checkSignature()
{
//略,在上一篇中有代码
}

public function https_request($url,$type,$res,$arr){
//略,见上
}

public function getAccessToken(){
//略,见上
}


在浏览器中输入http://www.peng.com/wechat.php,获取到的access_token结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息