微信公众号基础02_获取accessToken和用户信息
上一篇分享了搭建微信公众号server,本文分享一下假设获取access_Token和用户信息。工具还是新浪云SAE
1.获取access_Token
相见开发文档:https://mp.weixin.qq.com/wiki/14/9f9c82c1af308e3b14ba9b973f99a8ba.html
accesstoken是公众号的全局唯一票据,公众号调用各接口时都需使用accesstoken。开发人员须要进行妥善保存。accesstoken的存储至少要保留512个字符空间。accesstoken的有效期眼下为2个小时,需定时刷新。反复获取将导致上次获取的access_token失效。
请求地址 2小时期限 每天获取次数有限 须要保存下来,过期再又一次获取
https://api.weixin.qq.com/cgi-bin/token?granttype=clientcredential&appid=APPID&secret=APPSECRET
获取access_token一般包括两个文件,access_token.php文件用于推断access_token.txt文件里的acess_token是否到期并又一次获取放在access_token.txt文件里。
access_token.txt文件
{"access_token":"","time":0}
accesstoken:保存获取到的accesstoken值。time:记录获取时间
access_token.php文件
<? php
$appid = '此处填写appid';
$secret = '此处填写secret';
//请求腾讯接口 获取token 測试号每天2000次
// 获取access_token地址
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
// 获取access_token文件信息
$fileCon = file_get_contents("access_token.txt");
$fileJson = json_decode($fileCon); // 推断access_token是否过期,在接近两小时的7000秒时。又一次获取一次,保存在access_token.txt中
if ($fileJson->time<time()-7000) {
// 通过接口又一次获取access_token
$str = file_get_contents($url);
$json = json_decode($str);//把json字符串转为json对象 $access_token = $json->access_token; $data = array("access_token"=>$access_token,"time"=>time());
$json_str = json_encode($data); // 保存获取到的access_token
file_put_contents("access_token.txt", $json_str);
}else{
$access_token = $fileJson->access_token;
} echo $access_token;//输出查看access_token
?>
2.git上传至新浪云測试
打开新浪云SAE。选择自己的应用。在左側选择数据库与缓存服务,点开memcached,创建新的memcached用于存放缓存的access_token
注意上传至新浪云之前须要在access_token.php文件里的access_token.txt前面加上saemc://这是新浪云SAE訪问缓存文件的前缀,假设在本地server測试。则不须要加。
上传上去后,在浏览器输入应用地址后面跟上/access_token.php就可以返回一个access_token值。
3.获取用户信息
在測试号管理页面http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index通过微信扫码关注測试号,在用户列表里有了用户openid。有了access_token和openid才干获取关注者的信息。
參考获取用户信息文档http://mp.weixin.qq.com/wiki/1/8a5ce6257f1d3b2afb20f83e72b72ce9.html
使用OpenID来获取用户基本信息。
仅仅需在access_token.php文件里加入相关代码就可以
<? php
$appid = '此处填写appid';
$secret = '此处填写secret';
//请求腾讯接口 获取token 測试号每天2000次
// 获取access_token地址
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
// 获取access_token文件信息
$fileCon = file_get_contents("saemc://access_token.txt");
$fileJson = json_decode($fileCon); // 推断access_token是否过期
if ($fileJson->time<time()-7000) {
// 通过接口又一次获取access_token
$str = file_get_contents($url);
$json = json_decode($str);//把json字符串转为json对象 $access_token = $json->access_token; $data = array("access_token"=>$access_token,"time"=>time());
$json_str = json_encode($data); // 保存获取到的access_token
file_put_contents("saemc://access_token.txt", $json_str);
}else{
$access_token = $fileJson->access_token;
} // echo $access_token; // 用户openID
$openid = '当中一位关注者的openId';
// 获取用户信息地址
$url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
//获取接口信息
$user = file_get_contents($url);
// echo $user;
// 把获取的信息转为json对象
$obj = json_decode($user);
// 输出表格显示获取到的信息
echo "<table>";
echo "<tr>
<td><img style='width:60px' src='{$obj->headimgurl}'</td>
<td>{$obj->nickname}</td>
<td>".($obj->sex==1? "男":"女")."</td>
<td>{$obj->city}</td>
</tr>";
echo "</table>"; ?>
将以上代码更新至新浪云。打开access_token.php会显示某位用户相关信息
4.获取用户信息列表
当关注者不止一位时,能够输出用户信息列表。
在access_token.php中使用循环输出用户信息列表
<?php
$appid = '此处填写appid';
$secret = '此处填写secret';
//请求腾讯接口 获取token 測试号每天2000次
// 获取access_token地址
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
// 获取access_token文件信息
$fileCon = file_get_contents("saemc://access_token.txt");
$fileJson = json_decode($fileCon); // 推断access_token是否过期
if ($fileJson->time<time()-7000) {
// 通过接口又一次获取access_token
$str = file_get_contents($url);
$json = json_decode($str);//把json字符串转为json对象 $access_token = $json->access_token; $data = array("access_token"=>$access_token,"time"=>time());
$json_str = json_encode($data); // 保存获取到的access_token
file_put_contents("saemc://access_token.txt", $json_str);
}else{
$access_token = $fileJson->access_token;
} // echo $access_token; //获取用户列表 $url = "https://api.weixin.qq.com/cgi-bin/user/get? access_token={$access_token}";
$list = file_get_contents($url);
$listObj = json_decode($list);
// var_dump($listObj);
// exit(); //循环输出用户列表
$arr = $listObj->data->openid;
for($i = 0; $i <count($arr);$i ++){
// 用户openID
$openid = $arr[$i];
// 获取用户信息地址
$url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
//获取接口信息
$user = file_get_contents($url);
// echo $user;
// 把获取的信息转为json对象
$obj = json_decode($user);
// 输出表格显示获取到的信息
echo "<table>";
echo "<tr>
<td><img style='width:60px' src='{$obj->headimgurl}'</td>
<td>{$obj->nickname}</td>
<td>".($obj->sex==1?"男":"女")."</td>
<td>{$obj->city}</td>
</tr>";
echo "</table>";
}
?>
微信公众号基础02_获取accessToken和用户信息的更多相关文章
- 微信网页授权-公众号支付(获取openid、用户信息等)
名词解释: openid 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID 业务功能描述:实现H5页面可以在微信浏览器里面进行微信支付,所以需要 ...
- 微信公众号&小程序 -- 获取并解密用户数据(获取openId、unionId)
本文转自https://my.oschina.net/u/3235888/blog/832895 前言 微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc ...
- 微信公众号开发系列-获取微信OpenID
在微信开发时候在做消息接口交互的时候须要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID.接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获 ...
- 微信公众号网页授权获取用户openid
最近一个项目是在微信公众号内二次开发,涉及到微信公众号支付,根据文档要求想要支付就必须要获取到用户的openid. 这是微信官方文档https://mp.weixin.qq.com/wiki?t=re ...
- 微信公众号开发及时获取当前用户Openid及注意事项
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及 ...
- 14-网页,网站,微信公众号基础入门(网页版MQTT,小试牛刀)
https://www.cnblogs.com/yangfengwu/p/11192639.html 抱歉哈...最近由于做板子,,教程的进度落下了... 这些天总共做了还几块板子 首先对当前这个教程 ...
- tp6微信公众号开发者模式获取access_token
1:config 文件下新建一个文件wechat.php,将个人id和秘钥写入配置文件 网址: https://developers.weixin.qq.com/doc/offiaccount/Bas ...
- Java微信公众号开发----定时获取access_token并保存到redis中
本人原本是想做微信公众号菜单的创建修改删除等操作的,但是发现需要access_token,通过阅读文档,发现文档要求有以下几点: 1.access_token 获取后有效期是2小时 2.access_ ...
- JAVA微信公众号网页开发——获取公众号关注的所有用户(微信公众号粉丝)
package com.weixin.sendmessage; import org.apache.commons.lang.StringUtils; import org.apache.http.H ...
随机推荐
- python 全栈开发,Day15(递归函数,二分查找法)
一.递归函数 江湖上流传这这样一句话叫做:人理解循环,神理解递归.所以你可别小看了递归函数,很多人被拦在大神的门槛外这么多年,就是因为没能领悟递归的真谛. 递归函数:在一个函数里执行再调用这个函数本身 ...
- [转]什么时候该用NoSQL?
NoSQL这两年越来越热,尤其是大型互联网公司非常热衷这门技术.根据笔者的经验,并不是任何场景,NoSQL都要优于关系型数据库.下面我们来具体聊聊,什么时候使用NoSQL比较给力: 1) 数据库表sc ...
- HDU3031 To Be Or Not To Be 左偏树 可并堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU3031 题意概括 喜羊羊和灰太狼要比赛. 有R次比赛. 对于每次比赛,首先输入n,m,n表示喜羊羊和灰 ...
- BZOJ1207 [HNOI2004]打鼹鼠 动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1207 题目概括 n*n的方阵上,一开始你可以在任何地方. 你每秒可以移动一格,接下来有m只地鼠冒出 ...
- 5.Django|模型层--多表关系
多表操作 文件为 ----> orm2 数据库表关系之关联字段与外键约束 一对多Book id title price publish email addr php 人民出版社 北京 pyth ...
- 021 RDD的依赖关系,以及造成的stage的划分
一:RDD的依赖关系 1.在代码中观察 val data = Array(1, 2, 3, 4, 5) val distData = sc.parallelize(data) val resultRD ...
- django基类View.as_view()
参考:https://www.zmrenwu.com/post/53/ 详细见参考 一般请求的判断方法: def view(request, *args, **kwargs): if request. ...
- PushBackInputStream回退流
[例子1] import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.PushbackInputS ...
- 码云,git使用 教程-便签
码云,git使用 教程-便签 Code cloud, git use tutorial - note 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.c ...
- Python3练习题系列(02)
题目: 思考循环结构,看看它是怎样运行的,对我们认识程序有何益处. 知识点: list, for-loop, range 练习代码: 练习1 the_count = [1, 2, 3, 4, 5] # ...