報錯了 config:invalid signature 用了很多方法都沒用的
function getJsApiTicket(){
? ?//如果session中保存有效的jsapi_ticket
? ?if($_SESSION['jsapi_ticket_expire_time']>time() && $_SESSION['jsapi_ticket']){
? ? ? ?$jsapi_ticket=$_SESSION['jsapi_ticket'];
? ?}else{
? ? ? ?$access_token=$this->getWxAccessToken();
? ? ? ?$url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi";
? ? ? ?$res=$this->http_curl($url);
? ? ? ?$jsapi_ticket=$res['ticket'];
? ? ? ?$_SESSION['jsapi_ticket']=$jsapi_ticket;
? ? ? ?$_SESSION['jsapi_ticket_expire_time']=time()+7200;
? ?}
? ?return $jsapi_ticket;
}
//獲取隨機碼
function getRandCode($num=16){
? ?$array=array(
? ? ? ?'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
? ? ? ?'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
? ? ? ?'0','1','2','3','4','5','6','7','8','9',
? ?);
? ?$tmpstr='';
? ?$max=count($array);
? ?for($i=1;$i<=$num;$i++){
? ? ? ?$key =rand(0,$max-1);
? ? ? ?$tmpstr .=$array[$key];
? ?}
? ?return $tmpstr;
}
//分享朋友圈
function shareWx(){
? ?//1.獲取jsapi_ticket票據
? ?$jsapi_ticket=$this->getJsApiTicket();
? ?$timestamp=time();
? ?$noncestr=$this->getRandCode();
? ?$url="http://39.106.125.49/weixin/ThinkPHP/index.php/Home/Index/shareWx";
? ?//2.獲取singnature
? ?//$signature="jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$url;
? ?$signature="jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$url;
? ?$signature= sha1($signature);
? ?$this->assign('name','筱阿東');
? ?$this->assign('timestamp',$timestamp);
? ?$this->assign('noncestr',$noncestr);
? ?$this->assign('signature',$signature);
? ?$this->display('share');
}
wx.config({
? ?debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
? ?appId: 'wx3192f586241c3c97', // 必填,企業號的唯一標識,此處填寫企業號corpid
? ?timestamp:'<{$timestamp}>' , // 必填,生成簽名的時間戳
? ?nonceStr: '<{$noncestr}>', // 必填,生成簽名的隨機串
? ?signature: '<{$signature}>',// 必填,簽名,見附錄1
? ?jsApiList: [
? ? ? ?'onMenuShareTimeline',
? ? ? ?'onMenuShareAppMessage'
? ?] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
});
wx.ready(function(){
? ?wx.onMenuShareTimeline({
? ? ? ?title: 'test1', // 分享標題
? ? ? ?link: 'http://www.baidu.com', // 分享鏈接,該鏈接域名必須與當前企業的可信域名一致
? ? ? ?imgUrl: 'https://www.baidu.com/img/bdlogo.png', // 分享圖標
? ? ? ?success: function () {
? ? ? ? ? ?// 用戶確認分享后執行的回調函數
? ? ? ?},
? ? ? ?cancel: function () {
? ? ? ? ? ?// 用戶取消分享后執行的回調函數
? ? ? ?}
? ?});
? ?wx.onMenuShareAppMessage({
? ? ? ?title: 'test1', // 分享標題
? ? ? ?desc: 'test baidu', // 分享描述
? ? ? ?link: 'http://www.baidu.com', // 分享鏈接,該鏈接域名必須與當前企業的可信域名一致
? ? ? ?imgUrl: 'https://www.baidu.com/img/bdlogo.png', // 分享圖標
? ? ? ?type: 'link', // 分享類型,music、video或link,不填默認為link
? ? ? ?dataUrl: '', // 如果type是music或video,則要提供數據鏈接,默認為空
? ? ? ?success: function () {
? ? ? ? ? ?alert('分享成功');
? ? ? ? ? ?// 用戶確認分享后執行的回調函數
? ? ? ?},
? ? ? ?cancel: function () {
? ? ? ? ? ?alert('請重新分享');
? ? ? ? ? ?// 用戶取消分享后執行的回調函數
? ? ? ?}
? ?});
});
wx.error(function(res){
});
我的兩個代碼都沒錯吧 那個配置我也改過了 可是為什么我用了好多方法都沒有用????
2020-04-17
我目前是手機上訪問就會報簽名無效,但是電腦端分享給朋友是成功的,不知道為啥?
2018-05-29
看看是不是你的域名有問題,怎么直接用的ip?
那個timestamp不需要加amp吧,上面的怎么注釋掉了
yii2框架代碼:
public function actionWx_share()
??? {
??????? //1.獲取jsapi_ticket票據
??????? $timestamp = time();
??????? $noncestr? = $this->getRandCode();
??????? $url?????? = "http://i.yii6.com/site/wx_share";
??????? $str?????? = "jsapi_ticket=" . $this->getJsApiTicket() . "&noncestr=" . $noncestr . "×tamp=" . $timestamp . "&url=" . $url;
??????? $signature = sha1($str);
??????? return $this->renderPartial('share', [
??????????? 'timestamp' => $timestamp,
??????????? 'noncestr'? => $noncestr,
??????????? 'signature' => $signature,
??????????? 'name'=>'單身狗的咆哮'
??????? ]);
??? }
2018-05-19
設置url的時候必須小寫
2018-02-26
http://www.thinkphp.cn/code/1568.html?看看這個能不能幫到你