首先,我们作为第三方平台,在微信开放平台创建第三方公众号后,接下来首要处理的事情。就是获取预授权码。而微信上讲解一步一步做法,其实就是要写好一个一个方法,在引导授权页上,通过调用方法来得到这些参数。
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值:
最后,获取预授权码:
最后,预授权码获取到这里结束了,当然上面代码只是参考,最终方案取决于你自己需求设计。
祝食用愉快,额,,讲解不到位之处,轻喷~~