导航:首页 > 专利知识 > 微信的ticket有效期

微信的ticket有效期

发布时间:2021-07-25 00:30:22

① 如何缓存微信JS-SDK授权接口参数

微信的sdk文档要求接入方缓存两个参数:access_token和jsapi_ticket,在一定时间内这两个参数的值是不会过期的,不需要每次请求微信服务器获取。以下示例是通过thinkphp自带的缓存函数S实现。

参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/.html

用第一步拿到的access_token采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

以下代码片段示例如何缓存生成的access_token和jsapi_ticket(采用最新版ThinkPHP,包括Redis,Memcached等原理都是一样的):

② 如何使用微信JS-SDK实际分享功能

  1. 登录微信平台,点击“公众号设置”。

  2. 点击“功能设置”,然后点击“设置”。

  3. 设置JS接口安全域名。这里填写的是一级域名,不带www和http。最多可以设置三个域名。设置完后点击确定。(相比以前的分享没有任何域名限制,这里设置安全域名,目的是为了当发现此公众平台发现诱导分享行为时,可以根据此域名追溯到所有分享出去的链接,以及通过这些链接增加的粉丝。这样,微信就可以牢牢控制了微信平台,一旦发现违规,让分享链接失效,删除掉诱导行为增加的粉丝,是瞬间就可以完成的。因此,微信平台的开发者,一定要合理来使用分享功能,不要因小失大。)

  4. 在开发者中心中获取AppID和AppSecret,接下来在获取令牌时,需要这两个信息。

  5. 获取令牌。在服务器端完成。注意:返回的access_token长度至少要留够512字节。

  6. 获取jsapi的ticket。jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

  7. 签名,将jsapi_ticket、noncestr、timestamp、分享的url按字母顺序连接起来,进行sha1签名。

    noncestr是你设置的任意字符串。

    timestamp为时间戳。

  8. 完成。

③ 微信怎么判断微信accesstoken是否过期

获取accesstoken的时候,正常都会有 expires_in字段,就是过期时间,一般获取到accesstoken后,如果是保存到memcache里,直接用expires_in 作为过期时间;如果保存到数据库,则把当前时间加上7200,下次取accesstoken的时候先判断当期时间是否大于数据库里保存的时间,如果大于就表明过期了;


如果accesstoken时间未过期,但其他地方调用了accesstoken导致缓存里的过期了,则使用过期accesstoken后微信返回错误,这时候再重新向微信发起一次请求

{"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"}

④ 微信公众号生成带参数的二维码,创建二维码ticket谁知道怎么弄啊

为了节省时间,同时减少不必要的麻烦,你可以找公众平台第三方机构帮忙做,如“美基营销”,一般几天时间可以做好。

⑤ 求助微信小程序开放平台全网验证ticket失败问题

开放平台全网验证ticket失败是个很常见的问题,不用担心,换个时间段再试就会出现奇迹。
另外,被验证的网站里如果没有你在开放平台的业务内容的话,验证是不通过的。

⑥ 微信 js sdk 必须在微信中使用吗

登录你的微信平台,点击“公众号设置”。

2
点击“功能设置”,然后点击“设置”。

3
设置JS接口安全域名。这里填写的是一级域名,不带www和http。最多可以设置三个域名。设置完后点击确定。(多说一句,相比以前的分享没有任何域名限制,这里设置安全域名,目的是为了当发现此公众平台发现诱导分享行为时,可以根据此域名追溯到所有分享出去的链接,以及通过这些链接增加的粉丝。这样,微信就可以牢牢控制了你的微信平台,一旦发现违规,让分享链接失效,删除掉诱导行为增加的粉丝,是瞬间就可以完成的。因此,微信平台的开发者,一定要合理来使用分享功能,不要因小失大。等到你的微信平台被封,估计哭都来不及)

4
在开发者中心中获取你的AppID和AppSecret,接下来在获取令牌时,需要这两个信息。

5
获取令牌。在服务器端完成,代码如下:
function wx_get_token() {
$token = S('access_token');
if (!$token) {
$res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' .'你的AppID'.'&secret=' .'你的AppSecret');
$res = json_decode($res, true);
$token = $res['access_token'];
// 注意:这里需要将获取到的token缓存起来(或写到数据库中)
// 不能频繁的访问https://api.weixin.qq.com/cgi-bin/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_-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("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi",
$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":"-I98-_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);

END
步骤2 添加JS代码
生成签名后,就可以使用js代码了。在你的html中,进行如下设置即可。
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
// 微信配置
wx.config({
debug: false,
appId: "你的AppID",
timestamp: '上一步生成的时间戳',
nonceStr: '上一步中的字符串',
signature: '上一步生成的签名',
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 功能列表,我们要使用JS-SDK的什么功能
});
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在 页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready 函数中。
wx.ready(function(){
// 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
wx.onMenuShareTimeline({
title: '分享标题', // 分享标题
link:"分享的url,以http或https开头",
imgUrl: "分享图标的url,以http或https开头" // 分享图标
});
// 获取“分享给朋友”按钮点击状态及自定义分享内容接口
wx.onMenuShareAppMessage({
title: '分享标题', // 分享标题
desc: "分享描述", // 分享描述
link:"分享的url,以http或https开头",
imgUrl: "分享图标的url,以http或https开头", // 分享图标
type: 'link', // 分享类型,music、video或link,不填默认为link
});
});
</script>

⑦ 怎么判断微信accesstoken是否过期

都会有 expires_in字段,就是过期时间。

⑧ 微信分享功能 走了ready 不走onMenuShareAppMessage

登录你的 平台,点击“公众号设置”。2点击“功能设置”,然后点击“设置”。3设置JS接口安全域名。这里填写的是一级域名,不带/cgi-bin/token?grant_type=client_credential&appid='.'你的AppID'.'&secret='.'你的AppSecret');$res=json_decode($res,true);$token=$res['access_token'];//注意:这里需要将获取到的token缓存起来(或写到数据库中)//不能频繁的访问/cgi-bin/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_-0kVHY33BykRC0YXZZZ-WdxEic4","expires_in":7200}6获取jsapi的ticket。jsapi_ticket是公众号用于调用 JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。functionwx_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("getaccesstokenerror.");break;}$url2=sprintf("/cgi-bin/ticket/getticket?access_token=%s&type=jsapi",$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":"-I98-_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);END步骤2添加JS代码生成签名后,就可以使用js代码了。在你的html中,进行如下设置即可。

⑨ 微信企业号suiteticket不合法 是什么东西

根据微信企业号开发平台中提供的信息查询得知,-40005是corpid 校验错误,也就是说suiteid较验错误。

而比较奇怪的是在Sample.php在未修改任何参数情况下没有任何错误返回值,能够正确的解密数据,但只要一换成suite_ticket推送的4个值和3个套件参数就出现了错误代码。

这个问题困扰我已经四天了,几天里也经过了反复的调试和查找相关解决方法,结果如下:
1、POST过来的值肯定没有获取和输入性错误
$sReqMsgSig、$sReqTimeStamp、$sReqNonce是通过$_GET得到的,$sReqData数据是通过$GLOBALS["HTTP_RAW_POST_DATA"]方法得到的,通过复制粘贴的方式修改的Sample.php文件。另外为了保证该数据的准确性,在服务器端还通过抓包工具将微信POST的数据包进行了抓取,将内容与之对比,没有差异。
2、引用的文件位置没有问题
3、php环境中的mcrypt扩展已经开启
4、微信企业号开发文件中提到的corpid已经替换成了suiteid,并且sPostData数据结构明显是加密的,并不是明文,是需要进行解密后再使用的。
5、设置断点,比较差异
提示的-40005错误通过在解密过程中设置断点,并且与最初能够正确解密的Sample.php文件进行了结果对比,发现在pkcs7Encoder.php的112和120行出现了差异,造成了最后比较corpid时出现了不匹配。

经过几天的折腾,发现只要使用推送的第三方suite_ticket协议中的各项参数,在解密的时候就出现-40005错误,而例子文件和其他关注事件的推送信息,通过同样的方法就可以正常解密。只要将参数修改成应用套件的,就出错。
不知道您能不能看懂,如果您有兴趣可以私聊我,我这里有截图,有的截图弄不上去。
谢谢 。 来自畅移,您的贴心伴侣

阅读全文

与微信的ticket有效期相关的资料

热点内容
商标侵权事宜处理委托书 浏览:168
内容无版权今日头条 浏览:327
房产纠纷诉讼时效是多长时间 浏览:269
无形资产年限怎么确定 浏览:542
工商登记人员工作总结2018 浏览:799
我要发明机器人300字 浏览:341
转让合作书 浏览:512
上海联瑞知识产权代理有限公司宁波分公司 浏览:364
西安私人二手挖机转让 浏览:698
债务股权转让 浏览:441
食堂转让合同范本 浏览:335
广西华航投资纠纷 浏览:902
萌分期投诉 浏览:832
金软pdf期限破解 浏览:730
马鞍山学化妆 浏览:41
胶州工商局姜志刚 浏览:786
了解到的发明创造的事例 浏览:391
2012年中国知识产权发展状况 浏览:773
合肥徽之皇知识产权代理有限公司 浏览:636
天津企兴知识产权待遇 浏览:31