`
hanbaohong
  • 浏览: 407317 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

微信公众号缓存ACCESS_TOKEN的PHP代码

    博客分类:
  • PHP
 
阅读更多
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>活动会议签到</title>
</head>
<body>
<?php
function curlPost($url,$data=""){   
    $ch = curl_init();
    $opt = array(
			CURLOPT_URL     => $url,            
            CURLOPT_HEADER  => 0,
			CURLOPT_POST    => 1,
            CURLOPT_POSTFIELDS      => $data,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_TIMEOUT         => 20
    );
    $ssl = substr($url,0,8) == "https://" ? TRUE : FALSE;
    if ($ssl){
        $opt[CURLOPT_SSL_VERIFYHOST] = 2;
        $opt[CURLOPT_SSL_VERIFYPEER] = FALSE; //FALSE返回对象,TRUE返回数组
    }
    curl_setopt_array($ch,$opt);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

function accessToken() {
  $tokenFile = "./access_token.txt";
  $data = json_decode(file_get_contents($tokenFile));
  if ($data->expire_time < time() or !$data->expire_time){
	  $appid = "替换成你的appid";
	  $appsecret = "替换成你的appid";
	  $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
	  $res = getJson($url);
	  $access_token = $res['access_token'];
	  if($access_token) {
		  $data_new['expire_time'] = time() + 7000;
		  $data_new['access_token'] = $access_token;
		  $fp = fopen($tokenFile, "w");
		  fwrite($fp, json_encode($data_new));
		  fclose($fp);
	  }
  } else {
		$access_token = $data->access_token;
  }
   return $access_token;
}

function getJson($url){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$output = curl_exec($ch);
	curl_close($ch);
	return json_decode($output,TRUE); //返回数组式json
}

$ACCESS_TOKEN=accessToken();
$Url="https://api.weixin.qq.com/shakearound/user/getshakeinfo?access_token=$ACCESS_TOKEN";
$ticket=$_GET["ticket"];
$data='{"ticket":"'.$ticket.'","need_poi":0}';
$res = curlPost($Url,$data);
$openid=json_decode($res)->data->openid;
$fl=$_GET["fl"];
$url = "替换成你的网址/qd.asp?fl=". $fl ."&wxid=".$openid;
echo "<script language='javascript' type='text/javascript'>";  
echo "window.location.href='$url'";  
echo "</script>";
?>
</body>
</html>

 

分享到:
评论

相关推荐

    合理获取微信接口凭证access_token

    如何合理的使用微信接口凭证access_token

    asp获取微信openid、用户信息,缓存access_token

    代码是用asp独立完成编写的,已成功运用在微信活动项目中,编写过程中搜不到具体的案例...之前放出过一个版本,较之前的版本,这次新增了缓存access_token到数据库的功能,避免在获取用户信息时重复获取access_token

    VS2017 C# 获取微信token及验证access_token是否过期

    本代码演示通过VS2017 C# 获取微信token及验证access_token是否过期,以及通过access_token读取云中存储的数据。

    asp通过oauth2.0获取微信openid、缓存access_token,获取用户信息

    运用于实际项目中,完善后可将获取到的全局access_token缓存到数据库并判断是否需要更新,再获取用户头像、昵称、是否关注等等信息,可解决access_token重复获取的问题

    C#微信公众平台开发之access_token的获取存储与更新

    主要介绍了C#微信公众平台开发之access_token的获取存储与更新的相关资料,需要的朋友可以参考下

    asp通过oauth2.0,snapi_userinfo获取微信openid、缓存access_token,获取用户详细信息

    代码实现将获取到的全局access_token缓存到数据库并判断是否需要重新获取,以解决access_token重复获取超过2000次上限的问题出现。而后再用access_token获取昵称、头像、是否关注等用户信息并存于cookies中

    .Net微信开发之如何解决access_token过期问题

    在.NET微信开发中,`access_token` 是一个关键的授权凭证,用于调用微信提供的各种高级接口和服务。由于`access_token`的有效期仅为7200秒,因此开发者必须妥善处理其过期问题,以确保应用的正常运行。本文将详细...

    微信公众号模板消息群发php代码示例

    注意,如果模板消息发信息时有时无,不稳定,可能你的access_token令牌更新缓存不及时,过期了.可以根据日志文件查看.建议300秒更新一下.否则会很烦. 模板id需要自己去公众号中设置行业后得到. &lt;?php //使用方法....

    java微信公众号MVC开发框架

    微信上下文还包含了微信的access_token、appID、appSecret、encodingAESKey这些微信公众号的配置内容。微信上下文还保存微信方法与消息注解的策略对应关系,是微信消息能够得到处理的最重要的部分。微信上下文通过@...

    node微信开发之获取access_token+自定义菜单

    因为调用所有公众号的接口都需要用到access_token,所以必须先将access_token缓存起来,方便以后使用,access_token的有效时间为2小时,所以需要定时更新,下面是代码实现。 有一点需要注意,本文会提到两个access_...

    java实现微信小程序-获取接口调用凭据access-token

    然后,发起GET请求,请求到微信服务器获取返回access_token结果,在将其转为JSONObject对象,即可根据key获取到他的value值。 这样既能获取的到access_token,也能获取他的有效时间。 然后再根据这个过期时间,我们...

    php获取微信code.openid.名字和头像

    - **缓存策略**:access_token和openid的获取有一定成本,可以考虑缓存这些信息,减少对微信API的调用频率。 总结起来,通过微信OAuth2.0授权,PHP开发者可以方便地获取微信用户的code、openid、名字和头像,实现...

    JAVA模拟微信登录,获取粉丝, 主动推送信息

    此外,为了保证安全性和避免频繁请求,我们还需要处理access_token的刷新和缓存。 总结一下,Java模拟微信登录并实现获取粉丝及主动推送信息主要涉及以下几个关键点: 1. OAuth2.0授权流程的实现。 2. JSON库的使用...

    公众号中央授权系统(java)

    本系统用于公众号开发时中央授权使用,缓存整个公众号的access_token,jspai等关键数据。因为微信限制每天获取access_token的接口调用次数为2000,所以第三方需自己缓存这个。本系统为maven项目,集成了spring-mvc,...

    微信分享后端接口

    一种常见的做法是将access_token存储在内存缓存中(如Redis),并在过期前及时刷新。这样,每次前端请求分享时,后端可以快速返回有效的access_token,提高服务响应速度。 在没有数据库的情况下,统计分享的点击量...

    thinkPHP微信分享接口JSSDK用法实例

    首先,我们需要在数据库中创建一个`access_token`表,用于存储从微信服务器获取的access_token和ticket。access_token是调用微信接口的基础,而ticket则是获取JSAPI_ticket的关键。表结构如下: ```sql CREATE ...

    微信开发的php代码

    function wx_get_token() { $token = S('access_token'); if (!$token) { $res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant... $res = json_decode($res, true); $token = $res['access_...

    Go-wechat-proxy用于全局缓存微信accesstoken和转发微信回调消息的服务器程序

    微信代理 :用于全局缓存微信 access_token 和转发微信回调消息的服务器程序,自动缓存微信的 access_token 并将微信回调消息转发至多个后台服务器

    微信企业号二次验证接口PHP代码

    - 性能优化:尽量减少不必要的数据库查询,考虑缓存access_token和jsapi_ticket。 - 日志记录:记录验证过程中的关键信息,便于问题排查。 在提供的压缩包“二次验证接口例子”中,应该包含了实现以上步骤的PHP代码...

Global site tag (gtag.js) - Google Analytics