第四篇 获取access_token

Advertisement

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

公众平台的API调用所需的access_token的使用及生成方式说明:

1、为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务;
2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡;
3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。

如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新access_token,那么就可能会产生冲突,导致服务不稳定。

公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。

接口调用请求说明

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明

参数 是否必须 说明

grant_type 获取access_token填写client_credential
appid 第三方用户唯一凭证
secret 第三方用户唯一凭证密钥,即appsecret

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

参数 说明

access_token 获取到的凭证
expires_in 凭证有效时间,单位:秒

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

/**
* @author liuli
* 获取access_token
* access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
* 开发者需要进行妥善保存。
* access_token的存储至少要保留512个字符空间。
* access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
* 4jDowhQhY8Zr0CMoOhqc0uyvLX8oLOG2c-okF-mS8IGMBpO4gTBRX9d8-lC0aST3MRqjisj_P9ueYgvI1GdtxALIB01MW6GiPozibBonHe4
*/
public String getAccess_token(){
String urlstr = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+WeChartPams.AppID+"&secret="+WeChartPams.AppSecret+"";
try{
HttpURLConnection http = (HttpURLConnection) new URL(urlstr).openConnection();
http.setRequestMethod("GET");
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//连接超时30秒
System.setProperty("sun.net.client.defaultReadTimeout", "30000");//读取超时30秒
InputStream is = http.getInputStream();
int size = is.available();
byte[] buf = new byte[size];
is.read(buf);
String resp = new String(buf,"UTF-8");
log.info("back info:" + resp);
} catch (Exception e) {
log.error(e);
}
return resp;
}

}

Similar Posts:

  • 微信公众号入门笔记(四)获取access_token

    作者:zhutulang 以下是微信公众平台开发者文档中截取的内容: access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-bin/token?gra

  • [老老实实学WCF] 第四篇 初探通信--ChannelFactory

    老老实实学WCF 第四篇 初探通信--ChannelFactory 通过前几篇的学习,我们简单了解了WCF的服务端-客户端模型,可以建立一个简单的WCF通信程序,并且可以把我们的服务寄宿在IIS中了.我们不 禁感叹WCF模型的简单,寥寥数行代码和配置,就可以把通信建立起来.然而,仔细品味一下,这里面仍有许多疑点:服务器是如何建起服务的?我们在客户端调 用一个操作后发生了什么?元数据到底是什么东西?等等.我们现在对WCF的理解应该还处于初级阶段,我们就会觉得有许多这样的谜团了. 虽然我们生活在WC

  • 查询优化器内核剖析第四篇:从一个实例看执行计划

    查询优化器内核剖析第四篇:从一个实例看执行计划 系列文章索引: 查询优化器内核剖析第一篇 查询优化器内核剖析第二篇:产生候选执行计划&执行计划成本估算 查询优化器内核剖析第三篇:查询的执行与计划的缓存 & Hint提示 查询优化器内核剖析第四篇:从一个实例看执行计划 查询优化器内核剖析第五篇:进一步的了解执行计划 查询优化器内核剖析第七篇:执行引擎之数据访问操作---Scan 这几天也收到了一些朋友的来信说:为什么你花这么多的时间将这些东西,直接告诉我性能优化的方法就行了.这个问题,其实早

  • SpeedPHP 学习教程第四篇——实战留言本之增加和规则验证(原创连载五)

    本篇教程是SpeedPHP 学习教程第四篇--实战留言本之增删改,也是正式进行 speedphp的学习教程 有些图不方便贴,大家可以看下去安徽php社区:http://bbs.hfphp.org看下, 希望大家认真学习,多去动脑筋,当然也要动手啦~,学习编程的唯一诀窍就是多动手和多动脑,这样才能快速的学习. 添加留言: 添加留言当然有一个表单了,当我们打开留言页面的时候,我们就让在首页显示留言页面, 这段代放在controller/main.php,这个是系统默认的控制器文件,默认的动作是mai

  • 微信公众平台开发[5]-开发模式-高级功能-获取access_token

    access_token 是微信公众平台的一大亮点,有了这个值,在权限允许的情况下你可以做 1.自定义菜单管理: 2.主动发消息: 3.获取关注用户的信息: 4.通过图片.视频.音频ID获取内容: 5.将图片.视频.音频I内容上传到微信服务器并发送给用户: 接下来文章我只会讲解"自定义菜单管理",其余的几个接口,我这里虽然有文档,但考虑到微信官方没有公布相应的接口,故我在这里只先做预留,不暴露,请谅解. 本篇主要讲解如何获取access_token. access_token是微信提供

  • IOS最新新浪微博开放平台Oauth2.0授权获取Access_Token(通用)

    很久没写博客,最近在搞一个新浪微博的第三方应用,涉及到了Oauth2.0授权获取Access_Token,特此记录分享! 步骤一:添加应用 进入新浪微博开放平台(没有的话自行注册),进入"管理中心",点击"创建应用",选择"微链接应用",再点击"创建应用",,选"移动应用",填写相应的信息,其中应用地址没有的话可随便,勾选平台后提交.注意保存你的App Key和App Secret以备后用. 步骤二:Oau

  • Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)

    本文地址:http://blog.csdn.net/morewindows/article/details/11922643转载请标明出处,谢谢. 欢迎关注微博:http://weibo.com/MoreWindows 本系列一共四篇: 1. <Base64系列第一篇 Base64介绍> 2. <Base64系列第二篇 python中使用Base64编码解码> 3. <Base64系列第三篇 C/C++中使用Base64编码解码(使用boost库)> 4. <Ba

  • 互联网大脑的情绪,智商和梦境-互联网神经学系列第四篇

    这是互联网神经学系列的第四篇文章"互联网大脑的情绪.智商和梦境,互联网神经心理学" 1.互联网神经心理学的提出 我们在互联网神经学系列的第三篇文章中详细介绍了互联网大脑的架构和运行机理,既然互联网正在形成与人类大脑高度相似的组织结构,那么互联网也应该具备心理学现象,显示出喜怒哀乐情绪,智商,知觉.认知,智商等现象. 互联网神经心理学(Internet neuropsychology)就是从互联网的类神经结构角度分析互联网大脑的心理学问题,研究互联网是如何反映现实世界信息,如何反映社会关

  • 关于ADO的VC++编程的四篇文章

    [编者按]Abbey抽空将MSDN中关于VC++中使用ADO的四篇文章翻译成中文, 非常感谢他的无私奉献. 主要内容: 1) ADO概览 2) ADO对象模型的概要 3) ADO提供者 4) Visual C++中的ADO编程 文章为WORD格式,共有三十多页,适合打印成册! 下载本文档

  • Android系统信息获取 之十四:获取WIFI热点相关信息

    Android系统信息获取 之十四:获取WIFI热点相关信息 当在Android设备终端上使用Wifi热点的时候,需要获知Wifi热点的运行状态,热点是否打开,连接到该WIFI热点的设备数量,以及连接设备的具体IP和MAC地址. 使用re文件管理器去"/proc/net/arp",打开,发现连接上热点的设备信息都在这里了,包括mac ip等. 鉴于此,我们可以在代码中打开该文件,并获取WIFI热点的信息. 获取WIFI热点状态的方法getWifiApState()和判断热点是否可用的方