æ¥éª¤1 çæç¾å
1
ç»å½ä½ ç微信平å°ï¼ç¹å»âå
¬ä¼å·è®¾ç½®âã
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_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("
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":"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);
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>