一种微信访问令牌获取方法及系统与流程

文档序号:11138555阅读:4015来源:国知局
一种微信访问令牌获取方法及系统与制造工艺

本发明涉及互联网技术领域,特别涉及一种微信访问令牌获取方法及系统。



背景技术:

随着互联网技术的发展,交互变的越来越重要。在线的交互,已经成为日益重要的沟通模式。为了满足广大用户信息交互的需要,各种交互软件或者沟通软件应运而生。

微信是腾讯公司推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统支撑平台通过网络快速发送免费(需消耗少量网络流量)语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件等服务插件。微信提供公众支撑平台、朋友圈、消息推送等功能,用户可以通过“摇一摇”、“搜索号码”、“附近的人”、扫二维码方式添加好友和关注公众支撑平台,同时微信将内容分享给好友以及将用户看到的精彩内容分享到微信朋友圈。

微信作为时下最热门的社交信息支撑平台之一,也是移动端的一大入口,正在演变成为一大商业交易支撑平台,其对营销行业带来的颠覆性变化开始显现。微信商城的开发也随之兴起,微信商城是基于微信而研发的一款社会化电子商务系统,消费者只要通过微信支撑平台,就可以实现商品查询、选购、体验、互动、订购与支付的线上线下一体化服务模式。

微信公众账号是开发者或商家在微信公众支撑平台上申请的应用账号,该帐号与QQ账号互通,通过公众账号,商家可在微信支撑平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动。形成了一种主流的线上 线下微信互动营销方式。正如线上线下微信互动营销的代表微部落,率先提出标准的行业通用模板和深定制的微信支撑平台开发理念相结合。形成了线上线下微信互动营销的开放应用支撑平台。

用户可以通过自身设备与公众账号进行互动。通过手机向公众账号发送消息,一般需要如下步骤:

首先用你的手机微信关注微信公众账号。然后登陆自己的微信公众支撑平台点击公众账号助手。在公众账号助手设置的第二步选择输入你要绑定的微信号码。然后点击发送微信验证码。你的手机微信会收到一条信息,然后将数字输入到验证码输入框完成验证就完成了绑定了。然后进入通讯录,搜索公众账号助手。然后找到公众账号助手这个联系人这个号码是腾讯官方的账号mphelper(腾讯公众支撑平台的助手账号需要通过它进行消息群发)。关注该账号就可以通过向它发送群发消息了。点击进入聊天界面,然后向其发送消息,然后看你的公众账号的关注用户是否会接受到这条消息。

微信公众账号提供了一种微信与其它系统的后台服务相联系的方案,这一方案可以很好的为微信之外的其它开发者提供充分的开发空间。开发者可以通过微信公众账号将自身开发的服务应用接入微信系统,利用微信庞大的用户资源进行相应的操作。

现有技术中,微信公众平台开放了许多接口以提供更多个性化的服务,包括自定义菜单接口、客服接口、获取用户信息接口、用户分组接口、群发接口等,开发者在调用这些接口时,都需要传入一个相同的参数access_token,它是公众账号的全局唯一票据,它是接口访问凭证。access_token的有效期是7200秒(两小时),在有效期内可以使用,一旦access_token过期,需要重新通过调用微信接口获取。目前微信接口上面获取access_token每日限额为2000次,如果每次创建菜单,发送主动消息,获取用户信息,群发信息之前都去获取,必然会达到该接口的频率限制。因而,亟需要一种可以自动更新access_token使其保证不过期的方案,以提高用户体验度。



技术实现要素:

本发明提供一种微信访问令牌获取方法及系统,用以解决现有技术中无法自动更新访问令牌access_token的问题。

本发明提供一种微信访问令牌获取方法,包括:

中控服务器检测每个应用的访问令牌access_token过期时间;

在所述过期时间到期之前的预设时长内向微信服务器获取访问令牌;

将获取的访问令牌保存并监控每个应用的访问令牌过期时间。

所述方法还包括:

所述中控服务器定期检测每个应用的访问令牌过期时间。

所述方法还包括:

所述中控服务器根据每个应用的访问令牌到期时间,在到期之前预设时长,根据所述应用的标识和密码,向微信服务器获取所述应用的访问令牌。

所述方法还包括:

所述中控服务器根据预设的访问令牌获取时间,定期为每个应用向微信服务器获取访问令牌。

所述方法还包括:

所述预设的访问令牌获取时间小于访问令牌的有效时长;每个应用分别根据预设的访问令牌获取时间,定期向微信服务器获取访问令牌。

所述方法还包括:

为每个应用的访问令牌设置第二到期时间;在所述第二到期时间到期后,中控服务器为每个应用向微信服务器获取访问令牌。

一种微信访问令牌获取系统,包括:

过期时间检测单元,用于检测每个应用的访问令牌access_token过期时间;

获取访问令牌单元,用于在所述过期时间到期之前的预设时长内向微信服务器获取访问令牌;

访问令牌存储单元,用于将获取的访问令牌保存并监控每个应用的访问令牌过期时间。

所述系统还包括过期时间设置单元,用于获取和设置每个应用的访问令牌的过期时间。

所述系统还包括应用信息获取单元,用于获取每个应用的标识和密码;

所述获取访问令牌单元,在所述过期时间到期之前的预设时长内,根据所述应用的标识和密码,向微信服务器获取访问令牌。

所述系统还包括第二到期时间设置单元,用于为每个应用的访问令牌设置第二到期时间;

所述获取访问令牌单元,在所述第二到期时间到期后,为每个应用向微信服务器获取访问令牌。

本发明实施例中,通过中控服务器检测每个应用的访问令牌access_token过期时间;在所述过期时间到期之前的预设时长内向微信服务器获取访问令牌;将获取的访问令牌保存并监控每个应用的访问令牌过期时间。本发明实施例的方案,能够提供访问令牌access_token自动更新的机制,保证在访问令牌access_token符合更新次数的前提下,每个应用的访问令牌access_token均不过期,保证应用的正常工作机制,丰富了微信用户的体验,从而极大的提高了用户体验度。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例1提供的一种微信访问令牌获取方法原理流程图;

图2为本发明实施例2提供的一种微信访问令牌获取系统结构示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

如图1所示,为本发明实施例1提供的一种微信访问令牌获取方法原理流程图,其中,

步骤11,中控服务器检测每个应用的访问令牌access_token过期时间。

中控服务器是后台服务器,主要作用在于集中控制多个应用与微信服务器的借口和交互,主要用于保障每个应用的访问令牌access_token不过期。

access_token是一个用户自定义的任意字符串。在成功提交了开发者自定义的这个字符串之后,access_token的值会保存到微信后台。只有服务器和微信后台知道这个字符串,也就是说只有微信后台和公众账号服务器知道这个字符串。于是access_token就成了这两台服务器之间的密钥,它可以让公众账号服务器确认请求是来自微信后台还是恶意的第三方。

access_token简称Token。微信后台在向公众账号服务器发送数据的时候,会额外带上4个参数:timestamp、signature、nonce、echostr。其中timestamp是时间戳,nonce是一个随机数,signature是对timestamp、nonce和Token进行SHA1加密后的字符串。SHA1的加密过程是不可逆的,即不能通过timestamp、signature和nonce计算出Token是什么。

在公众账号服务器收到timestamp、signature和nonce之后,同样对nonce、timestamp和Token使用SHA1加密算法,得到自己的签名,如果自己的签名和请求中的signatrue是一样的,那么说明请求是来自微信后台而不是恶意第三 方。

恶意的第三方有可能会截获微信后台发过来的timestamp、signature和nonce这三个参数,然后直接利用这个三个参数对公众账号服务器发起请求。按照上面的逻辑可以知道,服务器是无法判断出这是个恶意的请求的。这种攻击称为replay攻击。这种攻击方式的防御方法很简单:加上对timestamp的校验。在收到请求之后,将请求包中的timestamp与当前时间比较,如果误差大于一定的值,就可认为这个请求是恶意的。这里不能做相等的比较,因为数据在网络上传输需要时间,同时各个服务的本地时间也是有一些差异的。

微信服务器通过检验signature对请求进行校验。若此次GET的Token验证可以通过,则表示该请求来自微信服务器,这时会原样返回echostr参数内容,表示接入生效,否则接入失败。

本实施例中,在实际微信接口开发中,我们需要把获取到的access_token存储起来,然后设置有效期,在有效期过期后再去获取,以保证access_token实时的有效性。

例如,通过分析XML文档,获取里面的AccessToken及AccessExpires,对比当前时间,如果AccessExpires小于等于当前时间,则重新获取access_token,代码中的GetAccessToken()就是获取access_token的方法,获取access_token后,将当前时间加上token有效期时间的结果及获取到的access_token重新写入到xml中,至此在以后的有效期范围内,再次获取access_token将直接读取xml文件中的AccessToken即可。

微信公众服务号(公众账号)是公众支撑平台的一种账号类型,旨在为用户提供服务。服务号一个月内仅可以发送四条群发消息。服务号发给用户的消息,会显示在用户的聊天列表中。并且,在发送消息给用户时,用户将收到即时的消息提醒。

订阅号是公众支撑平台的一种账号类型,为用户提供信息和资讯。订阅号每天可以发送一条群发消息。订阅号发给用户的消息,将会显示在用户的订阅 号文件夹中。在发送消息给用户时,用户不会收到即时消息提醒。在用户的通讯录中,订阅号将被放入订阅号文件夹中。

微信公众账号的用途非常广泛,政府,媒体,企业,明星等都开始纷纷建立独立的微信公众账号支撑平台。在上面进行个人企业等文化活动的宣传营销。

可以在设置里面绑定一个私人微信号,利用微信公众账号助手群发消息,随时查看消息群发状态。利用公众账号支撑平台进行自媒体活动,简单来说就是进行一对多的媒体性行为活动,如商家通过基于微信公众支撑平台对接的微信会员云营销系统展示商家微官网、微会员、微推送、微支付、微活动,已经形成了一种主流的线上线下微信互动营销方式。

实际上,微信公众账号提供了一种微信用户与后台第三方服务器之间的沟通渠道,公众账号用户可以与普通微信用户进行互动,借助微信支撑平台,可以非常方便的进行业务推广、服务提供等。

步骤12,在过期时间到期之前的预设时长内向微信服务器获取访问令牌。

到期时间是每个应用的访问令牌access_token更新之后到失效的时间,例如,现在腾讯公司规定的是2个小时,则每个应用的访问令牌access_token更新之后的2个小时后失效,需要在2个小时内重新获取应用的访问令牌access_token。

获取access_token的方案,可以采取如下过程:

用户在访问受保护的iServer服务时,对相关服务资源的每个请求都必须附带一个有效的Token,用户可以通过以下步骤向iServer申请令牌。

输入相关参数用以验证,并单击“生成令牌”以获取Token:

用户名:已注册并具有服务授权的用户名。

密码:用户的密码。

发放令牌的方式:包括以下三种:

HTTP Referer:指定使用令牌的URL,即访问SuperMap iServer服务的 URL。此方式可绑定访问服务的URL,使用其他URL访问iServer服务时,即使携带了Token也会被服务端拒绝。此方式适用于通过iClient(如SuperMap iClient for JavaScript)或基于REST的其他应用程序来构建Web Application的情况。

客户端IP:指定使用Token的IP地址。此方式绑定了访问iServer服务的IP地址,使用其他IP地址访问iServer服务时,即使携带了Token也会被服务端拒绝。

当前请求的IP:指定当前发送请求的IP地址为使用Token的IP地址。此方式限定了只有申请Token的IP才可以使用Token

有效期:自令牌发布时间起的持续时间,令牌在此持续时间内有效。有效期较短的令牌更安全,因为恶意用户拦截的令牌只能在较短的时间内使用。但是,短有效期意味着应用程序需要更频繁地请求新令牌。

用户可以通过多种表述格式申请Token。

过期时间之前的预设时长内,指的是在过期时间到期前,预设一个提前的预设时长,在这个预设时长之前,向微信服务器获取访问令牌。就是说,不能等到过期时间到期后再更新访问令牌,而是要提前一个时间段进行更新,这个提前时间段就是预设时长。

中控服务器根据每个应用的访问令牌到期时间,在到期之前预设时长,根据所述应用的标识APPID和密码,向微信服务器获取所述应用的访问令牌。

当然,中控服务器也可以根据预设的访问令牌获取时间,定期为每个应用向微信服务器获取访问令牌。预设的访问令牌获取时间小于访问令牌的有效时长;每个应用分别根据预设的访问令牌获取时间,定期向微信服务器获取访问令牌。为每个应用的访问令牌设置第二到期时间;在所述第二到期时间到期后,中控服务器为每个应用向微信服务器获取访问令牌。

也就是说,也可以不去管每个应用的到期时间,而是设定一个较小的第二到期时间,这个第二到期时间可以是非常小的时间,只要符合每天2000次的 限定即可。根据这个第二到期时间,可以在到期后,自动更新所有应用的访问令牌,这样保障所有的访问令牌都不过期。

当然,也可以为每个应用分别设置一个第二到期时间,检测每个应用的第二到期时间到期后,就为该应用获取访问令牌。第二到期时间的设置也是比较小,这样省去了预设时长的计算。

步骤13,将获取的访问令牌保存并监控每个应用的访问令牌过期时间。

访问令牌更新后,也就是重新获取后,需要存放在中控服务器中。中控服务器存储这些访问令牌并随时监控着访问令牌的到期时间。这里的监控与步骤11的检测是不同的,这个监控室大范围的,避免过期。而步骤11的检测,是单独的检测每个访问令牌的到期时间的。

如果是定期更新访问令牌的,则可以将存储的访问令牌在到达第二到期时间后,直接更新所有的访问令牌。

本发明实施例中,通过中控服务器检测每个应用的访问令牌access_token过期时间;在所述过期时间到期之前的预设时长内向微信服务器获取访问令牌;将获取的访问令牌保存并监控每个应用的访问令牌过期时间。本发明实施例的方案,能够提供访问令牌access_token自动更新的机制,保证在访问令牌access_token符合更新次数的前提下,每个应用的访问令牌access_token均不过期,保证应用的正常工作机制,丰富了微信用户的体验,从而极大的提高了用户体验度。

如图2所示,为本发明实施例2提供的一种微信访问令牌获取系统结构示意图,其中,

过期时间检测单元21,用于检测每个应用的访问令牌access_token过期时间;

获取访问令牌单元22,用于在所述过期时间到期之前的预设时长内向微信服务器获取访问令牌;

访问令牌存储单元23,用于将获取的访问令牌保存并监控每个应用的访问令牌过期时间。

进一步的,上述系统还包括过期时间设置单元24,用于获取和设置每个应用的访问令牌的过期时间。

进一步的,上述系统还包括应用信息获取单元25,用于获取每个应用的标识和密码;

所述获取访问令牌单元22,在所述过期时间到期之前的预设时长内,根据所述应用的标识和密码,向微信服务器获取访问令牌。

进一步的,上述系统还包括第二到期时间设置单元26,用于为每个应用的访问令牌设置第二到期时间;

所述获取访问令牌单元22,在所述第二到期时间到期后,为每个应用向微信服务器获取访问令牌。

综上所述,本发明实施例中,通过中控服务器检测每个应用的访问令牌access_token过期时间;在所述过期时间到期之前的预设时长内向微信服务器获取访问令牌;将获取的访问令牌保存并监控每个应用的访问令牌过期时间。本发明实施例的方案,能够提供访问令牌access_token自动更新的机制,保证在访问令牌access_token符合更新次数的前提下,每个应用的访问令牌access_token均不过期,保证应用的正常工作机制,丰富了微信用户的体验,从而极大的提高了用户体验度。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1