求助微信JSSDK 无法分享的问题
答案:2 悬赏:60 手机版
解决时间 2021-01-26 10:06
- 提问者网友:戎马万世
- 2021-01-26 01:22
求助微信JSSDK 无法分享的问题
最佳答案
- 五星知识达人网友:狂恋
- 2021-01-26 02:23
最新的微信JSSDK分享接口是不是有问题呀?还是我的代码哪里错了 …我看根据网上教程调了一整天了。还是调不出分享图片和标题。不知道那个地方出错了。显示的进展是.
全部回答
- 1楼网友:千杯敬自由
- 2021-01-26 03:28
1、登录你的微信平台,点击逗公众号设置地。
2、点击逗功能设置地,然后点击逗设置地。
3、设置js接口安全域名。这里填写的是一级域名,不带www和http。最多可以设置三个域名。设置完后点击确定。(多说一句,相比以前的分享没有任何域名限制,这里设置安全域名,目的是为了当发现此公众平台发现诱导分享行为时,可以根据此域名追溯到所有分享出去的链接,以及通过这些链接增加的粉丝。这样,微信就可以牢牢控制了你的微信平台,一旦发现违规,让分享链接失效,删除掉诱导行为增加的粉丝,是瞬间就可以完成的。因此,微信平台的开发者,一定要合理来使用分享功能,不要因小失大。等到你的微信平台被封,估计哭都来不及)
4、在开发者中心中获取你的appid和appsecret,接下来在获取令牌时,需要这两个信息。
5、获取令牌。在服务器端完成,代码如下:
function wx_get_token() {
$token = s('access_token');
if (!$token) {
$res = file_get_contents('' .'你的appid'.'&secret=' .'你的appsecret');
$res = json_decode($res, true);
$token = $res['access_token'];
// 注意:这里需要将获取到的token缓存起来(或写到数据库中)
// 不能频繁的访问,每日有次数限制
// 通过此接口返回的token的有效期目前为2小时。令牌失效后,js-sdk也就不能用了。
// 因此,这里将token值缓存1小时,比2小时小。缓存失效后,再从接口获取新的token,这样
// 就可以避免token失效。
// s()是thinkphp的缓存函数,如果使用的是不thinkphp框架,可以使用你的缓存函数,或使用数据库来保存。
s('access_token', $token, 3600);
}
return $token;
}
注意:返回的access_token长度至少要留够512字节。接口返回值:
{"access_token":"access_token","expires_in":7200}
{"access_token":"vdlthytfyb0n5emoi3n_amfmkpuwke0mgygf_0h0fpzl8p_hsdux8vgxz5osxuq5dm69lxp9wbwn9yzg-0kvhy33bykrc0yxzzz-wdxeic4","expires_in":7200}
6、获取jsapi的ticket。jsapi_ticket是公众号用于调用微信js接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
function wx_get_jsapi_ticket(){
$ticket = "";
do{
$ticket = s('wx_ticket');
if (!empty($ticket)) {
break;
}
$token = s('access_token');
if (empty($token)){
wx_get_token();
}
$token = s('access_token');
if (empty($token)) {
logerr("get access token error.");
break;
}
$url2 = sprintf("",
$token);
$res = file_get_contents($url2);
$res = json_decode($res, true);
$ticket = $res['ticket'];
// 注意:这里需要将获取到的ticket缓存起来(或写到数据库中)
// ticket和token一样,不能频繁的访问接口来获取,在每次获取后,我们把它保存起来。
s('wx_ticket', $ticket, 3600);
}while(0);
return $ticket;
}
接口返回值:
{"errcode":0,"errmsg":"ok","ticket":"sm4aovdwfpe4dxkxges8vmkv7fmcpm-i98-klc6so3q3awzxqljywtztcxih9hdoxzco9cgfhi6kwbe_ywtoqg","expires_in":7200}
7、签名,将jsapi_ticket、noncestr、timestamp、分享的url按字母顺序连接起来,进行sha1签名。
noncestr是你设置的任意字符串。
timestamp为时间戳。
$timestamp = time();
$wxnoncestr = "任意字符串";
$wxticket = wx_get_jsapi_ticket();
$wxori = sprintf("jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s",
$wxticket, $wxnoncestr, $timestamp,
'要分享的url(从http开始,如果有参数,包含参数)'
);
$wxsha1 = sha1($wxori);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯