迹忆博客
当前位置: 主页 > 学无止境 > 网络 > 文章

微信公众号开发教程 接口配置与身份验证

发布时间: 2016-10-11 作者: 迹忆 浏览次数:

要想成为微信公众号的开发者,首先必须有可以对外访问的服务器。微信公众号的开发不限制使用什么语言,这里我们使用PHP作为开发语言。

接口接入配置

登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件 的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。 EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。

身份验证

填写完接口信息以后,开始进行进行身份验证同时也是验证服务器的有效性。在我们提交信息以后,微信服务器会发送GET请求到我们上面填写的URL上。在上面填写的URL地址中我们可以看到,我们填写了一个php文件。没错,我们就是用这个PHP文件来进行验证的。

部分验证代码如下

public function valid(){
     $echoStr = $_GET["echostr"];
 //valid signature , option
     if($this->checkSignature()){
        echo $echoStr;
        exit;
     }
}
private function checkSignature(){
    // you must define TOKEN by yourself
    if (!defined("TOKEN")) {
        throw new Exception('TOKEN is not defined!');
    }
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
         $tmpArr = array($token, $timestamp, $nonce);
    // use SORT_STRING rule
         sort($tmpArr, SORT_STRING);
         $tmpStr = implode( $tmpArr );
         $tmpStr = sha1( $tmpStr );
         if( $tmpStr == $signature ){
                   return true;
         }else{
                   return false;
         }
}

通过上面的代码我们可以看到,微信服务器会向我们的服务器地址发送四个参数,分别是:

signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

那么token又是从哪里来的呢?这里的token就是我们上面填写的Token——URL下面的字段。所以在我们的验证代码中需要定义token常量

define("TOKEN",”我们填写的token”); //注意,这里的值必须和我们上面填写的一致

php完整代码下载

我们的验证代码准备完成以后,提交信息,我们会惊喜的看到在顶部会提示我们配置成功。

接入成功以后,我们要想着启用我们的接口,然后我们就可以根据开发文档来实现我们想要的效果了。

赞助
迹忆博客

除非注明转载,本站文章均为原创,欢迎转载,转载请以链接形式注明出处

本文地址: