您的位置:首页 > 其它

每周学一点 egret(9):分享

2016-01-04 23:27 791 查看

微信 invalid signature 现象问题猜测

最近学习也尝试用白鹭去做一个h5展示,发现还是有很多可以继续深入的地方。之前搞微信在做一个公众号分享的时候遇到一个错误,签名的错误。经过调试一下,发现微信网页签名是对本页url进行,但之前一直获取了其他地址进行,这个让微信一直爆签名问题。所以挺郁闷的,不过还没具体如何处理掉这个问题。只是发现了这个现象。

当你ajax 或者get 去取签名的时候,其实对本页进行授权签名,例如

A.php 请求本页 签名 那么不会出现微信的签名问题微信 invalid signature 的jssdk 报错的问题。这个我进行了几个简单实验,猜测这个签名 初步认为对本页去授权。

我做了一个很简单实验,A.php 上面获取签名信息。这样子是没有问题。

index.php

<? php
$jssdk  = new JSDK();
$jssdk->getsignPackage();
?>


第二次实验的时候,A.php 去取已经封装好的由后台生成的签名B.php,有一句很让人忽视的地方。就是一些案例包括微信提供的案例是 域名加host 去完成 url 构建,要注意这个链接,发现取到的签名 并不是对A.php 本身的链接授权,所以这个会导致一个现象。你请求的PHP,是对B.php授权了,那么A.php 可以理解为我一直等待你B审批我授权签名,但我发现B.php 获取到的url 是自己本身,所以这个A.php 返回的js 配置微信返回的调试信息 微信 invalid signature 。这个错会让人很抓狂。

于是我简单把这个地址写死做了一个实验,结果居然能行得通不报错,所以还是挺奇怪的。

总的方式就是注意到B.php 通过sha 算法,弄出那段字符是不是你的网址一样的。

A.php ====》请.B.php 通过我地址http://XXXX/A.php 通过授权,
B.php 对该地址进行授权输出一段配置给你,OK了返回给A.php 核对签名对不对。好了OK


坑的地方:B.php 获取地址的写法

有一些人说 用下面的

$url = "$protocol$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]"


有时候获取的地址 是本身的php,所以就没有错,一些demo制作的时候,获取的地址正是本页所以就没有这个问题。

有一些写法是这样子

$url = $protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]


我发现这个url 获取是个坑爹地方,那就是你究竟想对谁家的网址进行授权啊。

我理解究竟是不是 对A.php 地址想授权,当然发给后台,然后后台获取到这个地址,对A.php 授权,这样子我的理解对不对呢?

不过还没正式解决问题,实验了几次还是找到一些怪现象。可以勉强地认为是这个问题一些思路和一些猜测对不对。

总的一句话,打个比方,我开饭店想办个证,当然希望审批部门帮我通过正常途径去审批,但是审批完,发现我的名字写了一个多音字写错了,当然,我看到了这个就说搞错了。不知道这个比喻对不对。

url 的地址要留意,包括其他地址也是同时留意那个获取url 地址方式 要打印一下出来,究竟是不是想对这个地址授权,而不是获取了其他页面地址。

Egret微信分享简单的图标链接做法

下面做一个简单微信分享的带图标的做法。因为没有公众号,也没关系。因为微信接口会检测到这些图标信息。

打开Egret里面生成的index.html 然后添加一个img的标签,这个标签不能提供显示所以display设置为none,这个图标制作成300x300 即可,这个尺寸带要求可以参考微信提供的方式去设计这个图标大小,否则在分享的时候会看不到。



这里在title 里面添加你想要的标题,字体不宜太多。



有了这两个标签后,微信就能检测到相应的链接图标了。这样子小伙伴又可以看到带图标的链接了。

Egret 里面第三方微信类其实也可以和微信公众号来完成,但做起来还是很多步骤。对开发和调试还是有很多坑在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: