@@ -22,39 +22,56 @@ tags:
22
22
23
23
24
24
#### 3. 开发流程
25
- 1 . 公众号获取appid,secrtKey , 并且配置Ip白名单
25
+ 1 . 公众号获取appid,AppSecret , 并且配置Ip白名单。 ` 设置与开发-基本配置 `
26
26
2 . h5中引入微信的jssdk
27
- 3 . 开发后端签名代码, 参考下文
28
- 4 . h5端注册响应事件,参考下文
27
+ 3 . 公众号配置js安全域名` 设置与开发-公众号设置-功能设置-JS接口安全域名 `
28
+ 4 . 开发后端签名代码, 参考下文
29
+ 5 . h5端注册响应事件,参考下文
29
30
30
31
上述流程后在微信打开链接,点击分享给朋友,分享出去就是卡片形式啦。其实还是很简单的。
31
32
33
+ 以下代码复制后即可使用。
34
+
32
35
h5端示例代码:
33
36
``` js
34
37
// js 这里需要每次请求后端生成分享的签名参数信息
35
- fetch (` /api/wxshareinfo?q=${ encodeURIComponent (location .href )} ` , function (res ) {
38
+
39
+ fetch (` /api/wxshareinfo?q=${ encodeURIComponent (location .href )} ` ).then (res => res .json ()).then (res => {
40
+
36
41
wx .config ({
37
- debug: true , // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
38
- appId: ' wx762222228 ' , // 必填,公众号的唯一标识
42
+ debug: false , // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
43
+ appId: ' xxxxxx ' , // 必填,公众号的唯一标识
39
44
timestamp: res .timestamp , // 必填,生成签名的时间戳
40
45
nonceStr: res .nonceStr , // 必填,生成签名的随机串
41
- signature: res .signature ,// 必填,签名
42
- jsApiList: [' updateAppMessageShareData' ] // 必填,需要使用的JS接口列表
46
+ signature: res .signature ,// 必填,签名
47
+ jsApiList: [
48
+ ' updateAppMessageShareData' ,
49
+ ' updateTimelineShareData'
50
+ ]
51
+ });
52
+
53
+ // 通过error接口处理失败验证
54
+ wx .error (function (errres ) {
55
+ console .info (" 失败:" , errres);
43
56
});
44
57
45
58
wx .ready (function () { // 需在用户可能点击分享按钮前就先调用
46
- wx . updateAppMessageShareData ( {
47
- title: ' 大家快来看啊 ' , // 分享标题
48
- desc: ' hahahahaha ' , // 分享描述
49
- link: location . href , // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
50
- imgUrl: ' ' , // 分享图标
59
+ var sharedata = {
60
+ title: ' hello ' , // 分享标题
61
+ desc: ` hello! ` , // 分享描述
62
+ link: res . url , // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
63
+ imgUrl: location . protocol + " // " + location . host + " /logo.png " , // 分享图标链接,png格式
51
64
success : function () {
52
65
// 设置成功
53
- alert (" 分享成功" )
54
66
}
55
- })
67
+ }
68
+
69
+ wx .updateAppMessageShareData (sharedata);
70
+ wx .updateTimelineShareData (sharedata);
71
+
72
+
56
73
});
57
- })
74
+ });
58
75
59
76
```
60
77
@@ -77,7 +94,8 @@ h5端示例代码:
77
94
```
78
95
79
96
80
- 工具类代码,这里需要啰嗦一句,里面的access_token,和 jsticket这两个需要做缓存的,官方7200秒失效,我这里缓存了7000秒。
97
+ 工具类代码,这里需要啰嗦一句:
98
+ 里面的access_token,和 jsticket这两个需要做缓存的,官方7200秒失效,我这里缓存了7000秒。
81
99
``` java
82
100
package com.springboot.demo.zhifu ;
83
101
@@ -98,8 +116,8 @@ import java.util.*;
98
116
import java.util.concurrent.TimeUnit ;
99
117
100
118
public class jsapi_ticketGetUtil {
101
- public static final String APPID = " wx7222208 " ;
102
- public static final String APPSecret = " 3df82123123122222b66f " ;
119
+ public static final String APPID = " xxxx " ;
120
+ public static final String APPSecret = " xxxxxxxxx " ;
103
121
private static Logger logger = LoggerFactory . getLogger(jsapi_ticketGetUtil. class);
104
122
105
123
public static final Cache<String , String > cache = CacheBuilder
@@ -159,7 +177,7 @@ public class jsapi_ticketGetUtil {
159
177
// 注意这里参数名必须全部小写,且必须有序
160
178
string1 = " jsapi_ticket=" + jsapi_ticket +
161
179
" &noncestr=" + nonce_str +
162
- " ×tamp =" + timestamp +
180
+ " ×tamp =" + timestamp +
163
181
" &url=" + url;
164
182
System . out. println(string1);
165
183
@@ -254,3 +272,13 @@ public class jsapi_ticketGetUtil {
254
272
}
255
273
}
256
274
```
275
+
276
+
277
+ #### 4. 常见问题
278
+ 1 . debug模式打开后, 页面打开没有任何提示。 这里检查下jssdk是否正确引入。config代码是否执行
279
+ 2 . ` wx.ready ` 方法不执行。这里重点检查下config方法是否执行
280
+ 3 . 弹出提示签名错误,这里主要检查appid,和secrekey是否正确。可以使用 [ 官方签名工具] ( https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign ) 来验证签名是否正确
281
+ 4 . 所有配置都正确但是提示授权失败,这里需要检查公众号性质。个人注册的公众号没有也无法获取分享功能接口使用的。在设置开发-接口权限那里可以看到
282
+ 5 . 链接发送出去后是链接形式,不是卡片形式。这是由于微信要求链接只能通过公众号菜单分享,或者将链接生成二维码,用户扫码后再分享,这两种情况下分享出去才是卡片。
283
+
284
+
0 commit comments