微信公众号第三方开发之二获取预授权码(pre_auth_code)

微信公众号第三方开发之二获取预授权码(pre_auth_code)

其他文章:

微信公众号第三方开发之一创建微信公众号第三方平台


首先,我们作为第三方平台,在微信开放平台创建第三方公众号后,接下来首要处理的事情。就是获取预授权码。而微信上讲解一步一步做法,其实就是要写好一个一个方法,在引导授权页上,通过调用方法来得到这些参数。

需要预授权码,首先要有接口调用凭据(component_access_token)

而接口凭据又需要有微信的"推送component_verify_ticket"协议

1、获取微信推送协议【推送component_verify_ticket】

通过微信开放平台设置的授权事件url,我们需要写好方法来获取component_verify_ticket。

首先知道微信推送过来的参数有哪些?经过测试,发现微信推送过来的参数有如下:【signature=d1b24f7072876ffe41c442dfa9bede8timestamp=1460691113 nonce=490874248 encrypt_type=aesmsg_signature=b2afd8c37040bace57c403c2d1

但是,怎么都没发现什么加密过的消息体呢?几经破折,终于找到如下:



这里提到消息加解密做法有2歩:因此我们使用QueryString获取的只是一些额外参数,真正的消息体是在postdata【这个并不是参数名】里头。那么,到底怎么得到呢?我使用如下方法:

Stream inputStream =Request.InputStream;//

if (inputStream !=null)

{

using(StreamReader sr = newStreamReader(inputStream))

{

p_req= sr.ReadToEnd();

}

}

这里我建立了一张log表来检测授权流程获取的一系列字符串



因为Component_access_token有效期2小时,而且上限是2000次,这里我预先创建了3条记录,分别存储Component_verify_ticket、Component_access_token、pre_auth_code记录

以此进行以后的操作

特别是component_access_token存储的时候我直接将时间推迟了1.5小时,通过和当前系统时间比对,如果还在有效期内,就不再重新获取token串。具体做法如下:

存储方式是我自己研究想到这么做的,至于其他的核心方法实现都是参照上章节提到的博主的源码,请自行前往下载。

首先获取ticket:



其次,获取token值:


最后,获取预授权码:


最后,预授权码获取到这里结束了,当然上面代码只是参考,最终方案取决于你自己需求设计。

祝食用愉快,额,,讲解不到位之处,轻喷~~


其他文章:

微信公众号第三方开发之一创建微信公众号第三方平台

推荐阅读