微博开放平台开发之验证微博消息的真实性

因公司项目需求,需要接一下微博的一些接口、虽然看起来应该是跟微信公众平台的一样,但是无奈文档做的实在是太烂了,都没有一个明确的目录,幸亏之前接过微信公众平台,也算是有点经验。 【所谓验签】 在开发者首次使用事件推送服务时,需要先通过一次校验来和微博服务器建立首次连接;微博服务器发送GET请求到开发者填写的URL上,校验参数如下表所示:

校验参数字段字段类型字段说明
signaturestring微博加密签名,signature结合了开发者appsecret参数和请求中的timestamp参数,nonce参数
timestampstring时间戳
noncestring随机数
echostrstring随机字符串

signature参数的加密规则为:将appsecret参数,timestamp参数,nonce参数进行字典排序后,将三个参数字符串拼接成一个字符串进行sha1加密;开发者收到请求后,首先通过加密后的signature参数来校验GET请求的真实性,如果确认此次GET请求来自微博服务器,原样返回echostr参数内容就可以成功建立首次连接,否则连接失败。

建立首次连接后,后续每次微博事件推送时也都会带上signature、timestamp、nonce三个参数,开发者依然可以通过对signature的校验判断此条消息的真实性。校验方式与首次建立连接一致。

<?php
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $echostr = $_GET['echostr'];
    $token = YOUR_APP_SECRET;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature && $echostr){
        echo $echostr;
        exit;
    }else{
    DO something
    }
复制代码

其实和微信开放平台的消息验证是一样的,只不过微博把token换成了appsecret字段,另外这个文档很难找,我还是百度才找到的相关说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值