微信公众号基础02_获取accessToken和用户信息

上一篇分享了搭建微信公众号服务器,本文分享一下如果获取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访问缓存文件的前缀,如果在本地服务器测试,则不需要加。

上传上去后,在浏览器输入应用地址后面跟上/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>";
}
 ?>
时间: 2024-10-19 21:14:12

微信公众号基础02_获取accessToken和用户信息的相关文章

微信网页授权-公众号支付(获取openid、用户信息等)

名词解释: openid 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID 业务功能描述:实现H5页面可以在微信浏览器里面进行微信支付,所以需要使用微信公号支付功能才能实现, 微信公众号支付功能需要用户的openid,所以进入页面时需要通过网页授权首先获取到openid. 支付流程大致流程如下: 1,进入支付页面时,请求以下链接获取code appid 是 公众号的唯一标识 https://open.weixin.qq.com/connec

微信公众号开发及时获取当前用户Openid及注意事项

目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及时获取当前用户Openid及注意事项 前言 这篇主要是承接上篇的网页授权获取用户基本信息的后文,也是对第一种静默授权之后,用户点击公众号内链接时,如何再次取得当前用户的OpenId的大致讲解和一些注意事项. 看过上一篇的小伙伴都知道,我们在用户关注的时候就已经将该用户的基本信息存入数据库中,那么如果

微信公众号开发系列-获取微信OpenID

在微信开发时候在做消息接口交互的时候须要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID.接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获取OpenId(接收事件推送方式).下面事件中都能够获取到OpenID 关注/取消关注事件 用户在关注与取消关注公众号时.微信会把这个事件推送到开发人员填写的URL.方便开发人员给用户下发欢迎消息或者做帐号的解绑. 微信server在五秒内收不到响应会断掉连接,而且又一次发起请求,总共重试三次 关于

微信公众号基础开发

1.申请一个微信公众号(个人订阅号即可) 2.申请成为开发者,并打开开发者模式 注:开发者模式和编辑模式 两者互斥,不能同时开启 3.外网映射工具ngrok,下载地址:http://pan.baidu.com/s/1o6mXNDK 4.验证服务器的有效性 1).获取get请求携带的四个参数 1 package com.weinxin.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import ja

微信公众号申请页面获取验证码BUG

环境 操作系统: 浏览器: 网络:wifi 步骤 1.注册成功后,进入微信公众号 2.选择订阅号,下面的[选择并继续],点击确认 3.选择[个人]后,会让你填写个人信息 4.填写完姓名和身份证号码后,填写手机号后,[获取验证码]的按钮应该由灰色转为高亮,但是却没有,但是这个时候却可以点击,正确获取验证码. 频率 必现(3/3) 危害 轻微,反正不影响使用,但是用户体验较差,也不满足需求,因为当你点击获取,一分钟后的正常显示如下: 原因分析 JS对输入框的判断逻辑出现问题.

【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)

步骤一:首先得开通公众号(目的是 获得appid.AppSecret.设置安全域名)~ [公众号设置]→[功能设置] 设置相应的域名 步骤二:编写帮助类WeixinLuyinHelper中的代码 #region 请求Url,不发送数据/// <summary>/// 请求Url,不发送数据/// </summary>public static string RequestUrl(string url){return RequestUrl(url, "POST")

微信公众号网页授权获取用户基本信息

话不多说,根据官方文档需求说明,首先接口权限设置修改 先根据你的URL配置一下授权回调页域名 微信公众平台OAuth2.0授权的详细步骤如下 1)用户关注微信公众号. 2)微信公众号提供用户请求授权页面URL. 3)用户点击授权页面URL,将向服务器发送请求. 4)服务器询问用户是否同意授权给微信公众号(scope为snsapi_base时无此步骤). 5)用户同意(scope为snsapi_base时无此步骤). 6)服务器将code通过回调传给微信公众号. 7)微信公众号获得code. 8)

JAVA微信公众号网页开发——获取公众号关注的所有用户

package com.weixin.sendmessage; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.ClientProtocolException; import org.a

微信公众号测试账号获取授权须关注

微信公众号测试账号不关注的话,就没有授权的页面的原因是: 所谓测试号,就是用来测试的,当然有别于正规的公众号. 作为开发者来说,其使用限制在于关注这个测试号的人员和方式. 比如,第一你生成了一个二维码,你可以自己扫描关注,从而成为这个公众号的关注用户,当然也可以发给朋友来关注,来达到真实效果的测试. 原文地址:https://www.cnblogs.com/Fly-sky/p/9445080.html