前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel开发微信公众号【订阅号】后台的一些事情

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

作者头像
无道
发布2019-11-13 16:26:41
1.1K0
发布2019-11-13 16:26:41
举报
文章被收录于专栏:无道编程无道编程

普遍的应用场景

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

很常见的需求。

截图-1567845340
截图-1567845340

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

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

  • CSRF验证问题

CSRF验证问题

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

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

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

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

截图-1567845786
截图-1567845786

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

微信订阅号开发流程

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

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

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

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

截图-1567846057
截图-1567846057
截图-1567846080
截图-1567846080

可能新手会有点懵

截图-1567846134
截图-1567846134

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

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

如果验证成功,则输出echostr

PHP代码如下

代码语言:javascript
复制
$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
截图-1567846623

什么意思?

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 普遍的应用场景
  • CSRF验证问题
  • 微信订阅号开发流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档