Laravel开发微信公众号【订阅号】后台的一些事情

无道 2019-09-08 0 条评论 编程相关 阅读159 手机阅读

普遍的应用场景

对电脑这方面感兴趣的童鞋可能很清楚有一些“套路”,那就是回复某个关键词,获取某些素材、软件的下载地址。

很常见的需求。

截图-1567845340

今天我慢来聊一下用Laravel开发一个公众号后台的一些琐事。

也即我开发过程中的遇到的一些问题。

  • CSRF验证问题

CSRF验证问题

这个问题基本用Laravel都会知道:在Form表单中,需要用@csrf来验证。

如果没有csrf验证,会被Laravel拦截。

而今天我发现了一个添加“白名单”的方法,怪我基础不扎实。

那就是在app/Http/Middleware/VerifyCsrfToken.php添加白名单路径:

截图-1567845786

这样就解决了CSRF的验证问题。

微信订阅号开发流程

大致流程是:注册账号、获得权限、进行开发。

地址:https://mp.weixin.qq.com/

这个不重要,基本上都要开发了,肯定基础有,知道下一步干什么。

我想说的是验证服务器URL的一些问题

截图-1567846057

截图-1567846080

可能新手会有点懵

截图-1567846134

点击提交的时候微信会给你发送一些字符串【包括signature,timestamp,nonce,echostr】

然后你通过token【前面设置的】和timestamp以及nonce通过算法算出来一个字符串,用他来和给定的signature比较。

如果验证成功,则输出echostr

PHP代码如下

$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
define('TOKEN','xxxxxxxxxxxxxxxxxxxxxxxxx');
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
$echoStr = $_GET["echostr"];
if ($tmpStr == $signature) {
    echo $echoStr;
} else {
    echo 'no';
}

所以偷懒的一个方法是直接输出echostr就行。

还有一点需要提醒的是,你输入的URL不要有参数,要“干净”

截图-1567846623

什么意思?

URL可以是:https://www.misiyu.cn/xxx/xxx

但不能是:https://www.misiyu.cn/wechat?a=b&c=d

不能有?a=b&c=d,不然会一直验证失败的!

全文完 [
有帮助?打赏
支付宝打赏
微信打赏
]
修改: 2019-09-08 08:12
这篇文章还没有评论呢~
点击刷新/生成验证码
It's me
昵称:无道
坐标:成都
性别:
一个人,一介学生,一个儿子~ 愿你我都被世界温暖以待
迷思爱 公众号

新建了个公众号,会不定期分享一些小玩意,有提升效率的办公软件、有一些黑科技的软件、或教程等等。

爷~,要不关注下~~