導航:首頁 > 專利知識 > 微信的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