SunXinFei / sunxinfei.github.io

前后端技术相关笔记,已迁移到 Issues 中
https://github.com/SunXinFei/sunxinfei.github.io/issues
32 stars 3 forks source link

2019微信分享链接自定义文案与图片 #22

Open SunXinFei opened 4 years ago

SunXinFei commented 4 years ago

准备工作

  1. 在微信公共平台开通公众号(服务号/订阅号); 订阅号:个人提交身份证明即可申请,不需要缴纳费用,只能使用一些基本的接口(比如jssdk的自定义分享文案与图片)。 服务号:一般为企业注册,需要提交营业执照等资质证明,每年需要缴纳一定金额的审核费用进行续签,可以获取更大的比如支付、红包等权限更大的接口。
  2. 从左侧菜单进入设置->公众号设置,选择tab页中的功能设置,找到JS接口安全域名,点击设置,弹出下面弹框 image 说明:
    • 只有添加域名(已备案),分享的链接才能够被微信所识别(即微信JS接口可以被微信识别),微信目的是为了防止有恶意引诱分享的链接
    • 填写这个就是对应的域名下要有验证文件,才能完成添加
    • 一个公众号只能添加三个
  3. 从左侧菜单进入开发->基本配置,找到IP白名单,点击查看,通过开发者ID及密码调用获取access_token接口时,需要设置访问来源IP为白名单,即为我们将请求获取微信tocken服务的后端服务器的ip地址填写进入白名单 image
  4. 点击微信公共平台-微信JS-SDK说明文档,页面最下面,有附录6-DEMO页面和示例代码,示例代码中有php、java、nodejs、python四种语言的关于获取access_token、 jsapi_ticket的后台示例代码。

    access_token access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 公众号和小程序均可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。小程序无需配置IP白名单。 jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

注意事项!!!非常重要!!! 1.签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。 2.签名用的url必须是调用JS接口页面的完整URL。 3.出于安全考虑,开发者必须在服务器端实现签名的逻辑。 如出现invalid signature 等错误详见附录5常见错误及解决办法。

说明:access_token和jsapi_ticket都是7200秒的有效期,都需要进行本地保存(redis/文件/数据库),官方示例代码使用的是本地文件保存和读取;后台签名算法中的url必须和最后分享的也就是打开页面的url必须完全一致

a.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。 b. 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败

JSSDK使用步骤

这里不再多赘述其他的,只是提几点: