php分享朋友圈的實現(xiàn)代碼
更新時間:2019年02月18日 11:57:05 作者:魔法程序媛
這篇文章主要為大家詳細(xì)介紹了php分享朋友圈的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了php實現(xiàn)分享朋友圈的具體代碼,供大家參考,具體內(nèi)容如下
<?php
class JSSDK {
private $appId;
private $appSecret;
public function __construct($appId, $appSecret) {
$this->appId = $appId;
$this->appSecret = $appSecret;
}
public function getSignPackage() {
$jsapiTicket = $this->getJsApiTicket();
// 注意 URL 一定要動態(tài)獲取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$timestamp = time();
$nonceStr = $this->createNonceStr();
// 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
$signature = sha1($string);
$signPackage = array(
"appId" => $this->appId,
"nonceStr" => $nonceStr,
"timestamp" => $timestamp,
"url" => $url,
"signature" => $signature,
"rawString" => $string
);
return $signPackage;
}
private function createNonceStr($length = 16) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return $str;
}
private function getJsApiTicket() {
// jsapi_ticket 應(yīng)該全局存儲與更新,以下代碼以寫入到文件中做示例
$data = json_decode(file_get_contents("jsapi_ticket.json"));
if ($data->expire_time < time()) {
$accessToken = $this->getAccessToken();
// 如果是企業(yè)號用以下 URL 獲取 ticket
// $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
$res = json_decode($this->httpGet($url));
$ticket = $res->ticket;
if ($ticket) {
$data->expire_time = time() + 7000;
$data->jsapi_ticket = $ticket;
$fp = fopen("jsapi_ticket.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
}
} else {
$ticket = $data->jsapi_ticket;
}
return $ticket;
}
private function getAccessToken() {
// access_token 應(yīng)該全局存儲與更新,以下代碼以寫入到文件中做示例
$data = json_decode(file_get_contents("access_token.json"));
if ($data->expire_time < time()) {
// 如果是企業(yè)號用以下URL獲取access_token
// $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
$res = json_decode($this->httpGet($url));
$access_token = $res->access_token;
if ($access_token) {
$data->expire_time = time() + 7000;
$data->access_token = $access_token;
$fp = fopen("access_token.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
}
} else {
$access_token = $data->access_token;
}
return $access_token;
}
private function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
}
$jssdk = new JSSDK("wx6b3844d6802f74aa", "c8710c8f4e0afce7611f5cd0013c4573");
$signPackage = $jssdk->GetSignPackage();
?>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
/*
* 注意:
* 1. 所有的JS接口只能在公眾號綁定的域名下調(diào)用,公眾號開發(fā)者需要先登錄微信公眾平臺進入“公眾號設(shè)置”的“功能設(shè)置”里填寫“JS接口安全域名”。
* 2. 如果發(fā)現(xiàn)在 Android 不能分享自定義內(nèi)容,請到官網(wǎng)下載最新的包覆蓋安裝,Android 自定義分享接口需升級至 6.0.2.58 版本及以上。
* 3. 常見問題及完整 JS-SDK 文檔地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
*
* 開發(fā)中遇到問題詳見文檔“附錄5-常見錯誤及解決辦法”解決,如仍未能解決可通過以下渠道反饋:
* 郵箱地址:weixin-open@qq.com
* 郵件主題:【微信JS-SDK反饋】具體問題
* 郵件內(nèi)容說明:用簡明的語言描述問題所在,并交代清楚遇到該問題的場景,可附上截屏圖片,微信團隊會盡快處理你的反饋。
*/
wx.config({
debug: false,
appId: '<?php echo $signPackage["appId"];?>',
timestamp: <?php echo $signPackage["timestamp"];?>,
nonceStr: '<?php echo $signPackage["nonceStr"];?>',
signature: '<?php echo $signPackage["signature"];?>',
jsApiList: ['onMenuShareTimeline',
'onMenuShareAppMessage'
// 所有要調(diào)用的 API 都要加到這個列表中
]
});
wx.ready(function () {
//分享朋友
wx.onMenuShareAppMessage({
title: '你的分享標(biāo)題', // 分享標(biāo)題
desc: '你的分享描述', // 分享描述
link: "你的鏈接?pid=<?php echo $userone['id']?>", // 分享鏈接
imgUrl: '圖片地址', // 分享圖標(biāo)
type: '', // 分享類型,music、video或link,不填默認(rèn)為link
dataUrl: '', // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空
success: function () {
//alert('成功分享到您的朋友');
},
cancel: function () {
//alert('取消分享到您的朋友');
// 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
}
});
//朋友圈
wx.onMenuShareTimeline({
title: '你的分享標(biāo)題', // 分享標(biāo)題
desc: '你的分享描述', // 分享描述
link: "你的鏈接?pid=<?php echo $userone['id']?>", // 分享鏈接
imgUrl: '圖片地址', // 分享圖標(biāo)
success: function () {
// 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
},
cancel: function () {
// 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
}
});
});
</script>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PHP模板引擎Smarty之配置文件在模板變量中的使用方法示例
這篇文章主要介紹了PHP模板引擎Smarty之配置文件在模板變量中的使用方法,結(jié)合實例形式分析了配置文件變量的具體使用步驟與相關(guān)技巧,需要的朋友可以參考下2016-04-04
讓Laravel API永遠(yuǎn)返回JSON格式響應(yīng)的方法示例
這篇文章主要給大家介紹了關(guān)于如何讓Laravel API永遠(yuǎn)返回JSON格式響應(yīng)的相關(guān)資料,需要的朋友可以參考下2018-09-09
PHP加密3DES報錯 Call to undefined function: mcrypt_module_open()
這篇文章主要介紹了PHP加密3DES報錯 Call to undefined function: mcrypt_module_open() 如何解決的相關(guān)資料,需要的朋友可以參考下2016-04-04
php 模擬post_驗證頁面的返回狀態(tài)(實例講解)
php模擬post_驗證頁面的返回狀態(tài)(實例講解)。需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
使用PHP連接數(shù)據(jù)庫_實現(xiàn)用戶數(shù)據(jù)的增刪改查的整體操作示例
下面小編就為大家?guī)硪黄褂肞HP連接數(shù)據(jù)庫_實現(xiàn)用戶數(shù)據(jù)的增刪改查的整體操作示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09

