自定義分享
在微信內(nèi)置瀏覽器環(huán)境中假抄,默認(rèn)是有分享功能的怎栽,但是標(biāo)題、簡(jiǎn)述和頭圖都是不能自定義的宿饱,在分享時(shí)會(huì)抓取網(wǎng)頁(yè)中的信息熏瞄。
類似這樣(圖文無關(guān))
這樣的消息看起來不是太友好,有時(shí)候?yàn)榱藵M足產(chǎn)品運(yùn)營(yíng)的需求我們需要自定義分享出去的標(biāo)題谬以、簡(jiǎn)述和圖片(看看人家拼多多的分享文案)巴刻。
要實(shí)現(xiàn)自定分享內(nèi)容,首先在需要分享功能的頁(yè)面中引入微信jssdk蛉签,初始化配置信息胡陪。
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
然后初始化微信的配置信息沥寥。
/*
* 注意:
* 1. 所有的JS接口只能在公眾號(hào)綁定的域名下調(diào)用,公眾號(hào)開發(fā)者需要先登錄微信公眾平臺(tái)進(jìn)入“公眾號(hào)設(shè)置”的“功能設(shè)置”里填寫“JS接口安全域名”柠座。
* 2. 如果發(fā)現(xiàn)在 Android 不能分享自定義內(nèi)容邑雅,請(qǐng)到官網(wǎng)下載最新的包覆蓋安裝,Android 自定義分享接口需升級(jí)至 6.0.2.58 版本及以上妈经。
* 3. 常見問題及完整 JS-SDK 文檔地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
*
* 開發(fā)中遇到問題詳見文檔“附錄5-常見錯(cuò)誤及解決辦法”解決淮野,如仍未能解決可通過以下渠道反饋:
* 郵箱地址:weixin-open@qq.com
* 郵件主題:【微信JS-SDK反饋】具體問題
* 郵件內(nèi)容說明:用簡(jiǎn)明的語言描述問題所在,并交代清楚遇到該問題的場(chǎng)景吹泡,可附上截屏圖片骤星,微信團(tuán)隊(duì)會(huì)盡快處理你的反饋。
*/
wx.config({
debug: true, //debug模式下會(huì)alert一些調(diào)試信息方便開發(fā)調(diào)試
appId: '<?php echo $signPackage["appId"];?>',
timestamp: <?php echo $signPackage["timestamp"];?>,
nonceStr: '<?php echo $signPackage["nonceStr"];?>',
signature: '<?php echo $signPackage["signature"];?>',
jsApiList: [
// 所有要調(diào)用的 API 都要加到這個(gè)列表中
'onMenuShareTimeline', //分享到朋友圈
'onMenuShareAppMessage', //分享給朋友
'onMenuShareQQ' //分享到QQ
]
});
wx.ready(function () {
// 在這里調(diào)用 API
var options = {
title: '十七度是一個(gè)好網(wǎng)站', // 分享標(biāo)題
link: 'https://www.shiqidu.com/news/detail/id/1', // 分享鏈接爆哑,記得使用絕對(duì)路徑洞难,不能用document.URL
imgUrl: 'http://www.shiqidu.com/Uploads/News/2016-11/1477995152201598.jpg', // 分享圖標(biāo)
desc: '程序員的后花園', // 分享描述
success: function () {
console.info('分享成功!');
// 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
},
cancel: function () {
console.info('取消分享揭朝!');
// 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
}
};
wx.onMenuShareTimeline(options); // 分享到朋友圈
wx.onMenuShareAppMessage(options); // 分享給朋友
wx.onMenuShareQQ(options); // 分享到QQ
});
如上圖队贱,在初始化配置的時(shí)候,我們需要一些參數(shù):appId
,nonceStr
,signature
等潭袱。
如何獲取這些信息呢柱嫌,在微信官方sdk demo中,已經(jīng)為我們寫好了大半屯换,改改直接用即可编丘。
下載PHP版SDK,下載完成后解壓放到你的項(xiàng)目中彤悔。
引入SDK嘉抓,傳入appId
和appSecret
調(diào)用GetSignPackage
方法,獲得signPackage傳到頁(yè)面js中完成微信配置初始化即可蜗巧。
require_once "jssdk.php";
$jssdk = new JSSDK("你的appId", "你的appSecret");
$signPackage = $jssdk->GetSignPackage();
然后在微信中打開我們的頁(yè)面,在debug模式下蕾盯,在進(jìn)入頁(yè)面的時(shí)候幕屹,會(huì)alert出調(diào)試信息,如果一些OK的話级遭,點(diǎn)擊右上角的三個(gè)點(diǎn)望拖,點(diǎn)擊分享到朋友圈或分享給好友,這時(shí)也會(huì)alert出一些調(diào)試信息挫鸽,以便你debug说敏。如果一切順利的話,分享功能到此就結(jié)束了丢郊。
分享出去的消息類似這樣盔沫。(圖文無關(guān))
獲取微信用戶信息和unionID
有時(shí)候医咨,我們希望獲取用戶的unionid和昵稱頭像這些信息,當(dāng)然必須是在用戶授權(quán)之后架诞。
以tp3.2為例拟淮,方法很簡(jiǎn)單,話不多說直接上代碼谴忧。
首先調(diào)用微信授權(quán)api很泊,傳入APPID
和回調(diào)地址
,在用戶同意授權(quán)后沾谓,會(huì)跳轉(zhuǎn)到這個(gè)回調(diào)地址委造。
$str = "https://www.shiqidu.com/test/getWechatInfoCallbak";
$str_url = urlencode($str);
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . "[你的APPID]" . '&redirect_uri=' . "[用戶授權(quán)后的回跳地址]" . '&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
header("Location:" . $url);
然后在指定的getWechatInfoCallbak
方法中會(huì)到一個(gè)code
,拿到code
調(diào)用微信api獲取access_token
和openid
均驶。拿到這兩個(gè)參數(shù)后在調(diào)用微信userinfo api獲取用戶基本資料
和unionid
昏兆。
$code = I('code');
$state = I('state');
// 獲取access_token和openid
$accessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . "[你的APPID]" . "&secret=" . "[你的AppSecret]" . "&code={$code}&grant_type=authorization_code";
$accessTokenResult = json_decode(curl_request($accessTokenUrl), 1);
$access_token = $accessTokenResult['access_token'];
$openid = $accessTokenResult['openid'];
!$openid && exit("Openid獲取失敗");
// 獲取userInfo
$getUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN";
$userInfoResult = json_decode(curl_request($getUserInfoUrl), 1);
!is_array($userInfoResult) && exit("用戶信息獲取失敗,請(qǐng)重試~");
// 返回的數(shù)據(jù)中包含unionid
$unionId = $userInfoResult['unionid'];
原文來自十七度 https://www.shiqidu.com/d/673