Disqus Api返回email加星号,自建本地缓存显示Gravater头像

2020-02-25 11:07:00
Disqus是知名的社会化评论系统,由于众所周知的原因,我们无法在国内直接使用Disqus,由于Fooleap大牛写了一个造福万千博主的开源项目:disqus-php-api,通过php转发Disqus API 请求。目前,MADfan评论系统,依然采用的是disqus-php-api的方案。

MADfan上的用户评论功能使用了disqus-php-api

但是相信一些用户可能,都遇到了在线管理功能失效,以及无法获取Gravater头像的问题,这并不是 disqus-php-api 的问题。

而是 Disqus 官方在接口处,不再直接返回 email 和 ipAddress 这两个重要参数,而是只返回 添加 * 号处理隐私后的结果。

接口:/api/3.0/threads/listPostsThreaded

Disqus返回的email和ipAddress字段加了星号

遗憾地是,emailHash这个参数返回始终也是空值,而且源码中,关于 管理员权限 的判定,是根据 email的值 去做的。

事实上,原来由两种方式,获取 email 和 ipAddress 的原始值:

1 模拟登陆:通过用户名和密码,模拟登陆 Disqus,截取到response header中sesssion的 cookie 信息后,存入缓存,再在请求 api接口时,附加 cookie。

2 按照Disqus官方的方式,授权Api有在线管理的权限,然后通过accesstoken,去请求接口,但这样月度调用上限,不能超过1000的限制。


解决办法,以前的邮箱拿不到了,我们修改 postcomment.php,在用户提交信息时,将邮箱按照post的id对应邮箱的方式,将数据存到本地,实现的php代码如下:

在disqus-php-api中,用户提交评论时,自行缓存用户邮箱的php代码

然后,修改 init.php 中 post_format 方法,在其中,添加下面的内容:

在disqus-php-api中,渲染评论时,读取缓存中用户邮箱的php代码

这样以后,新增加的评论,如果用户填写了邮箱,就会通过邮箱的md5,去获取 Gravater头像。


P.S.

设置Gravater头像,现在需要使用Wordpress账号登陆,所以,以前可以轻松设置的头像,现在可能需要花费一点功夫啦~