工作需要,需要支持页面的微信自定义分享。查阅了一些资料后整理如下。最详尽的资料在微信官方文档微信公众平台,下面是针对PHP微信分享的小结和整理。
前置条件
1. 公众号支持微信自定义分享功能
首先要确保公众号支持自定义分享功能,具不完全考证,目前(2017.7)微信只支持认证过的公众号有分享功能。查看有无该功能,可在【开发】-【接口权限】中查看。 如图1和图2。
2. 公众号添加域名
如图3,在【设置】-【公众号设置】的【功能设置】Tab页面,选择JS接口安全域名设置。
在添加JS接口前,如图4,弹出的画面会提醒在域名根目录下添加文件,下载超链接的文件后上传至服务器,并确保路径可以访问后,再添加域名(注域名不带http:, 如http://www.baidu.com 应填写为 www.baidu.com)。
如果可以访问成功且域名有效,便可进行保存。同时会提示将服务器IP添加至白名单,按照提示可添加白名单,如果当时不确定IP地址,也可稍后再条件。
3. IP白名单添加
3.1 获取IP地址
如果已经登录了服务器,可以在命令行输入ifconfig查看本机IP,eth1的inet addr项,如图5。
如果没有登录服务器,可以通过Ping服务器的方式获取服务器IP。如图6。
3.2 设置白名单
在【设置】-【安全中心】里面,选择IP白名单,查看,进行编辑,如图7和图8。
代码部分
1. 代码目录结构
示例代码给的结构前端PHP和后端处理代码在同一个目录结构下,实际项目中可根据需求进行修改。图9是一个示例:
2. 后台代码
后台代码是示例代码的jssdk.php文件,里面向微信请求了access_token和ticket,微信示例代码中,将请求的结果写在文件里面进行缓存,每次调用分享时,从文件中读取有效时间,如果超时再重新请求。
3. 前台代码
3.1 appId和appSecret替换
前台代码是示例中的sample.php,其中需要注意的是appId,和appSecrect需要进行替换。appId在微信公众平台【设置】-【基本配置】里面,如图10,图11。
2. 代码部分,如图12。
第一步需要替换appId和appSecret,第二步需要填充自己需要的apilist,第三步是设置分享的调用函数。注意下面的代码是开了debug的,如果最终在正式环境上调用,需要把config.debug 设置为false。