在開發微信相關應用時,常需判斷用戶是否透過微信內建瀏覽器訪問。微信瀏覽器的 User-Agent 字串中包含 MicroMessenger 關鍵字及版本號,並可由此區分 iOS 或 Android 設備。
iPhone 環境:
Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2
Android 環境:
Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255
不難發現,MicroMessenger 標識與版本號是判斷的關鍵。
透過 $_SERVER['HTTP_USER_AGENT'] 檢查是否包含 MicroMessenger:
function is_weixin() {
return strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false;
}
if (is_weixin()) {
echo "Welcome to wechat world";
} else {
header('HTTP/1.1 401 Unauthorized');
echo "請使用微信訪問本網址。";
}
此函式可直接用於防盜鏈或限制非微信環境訪問。
前端同樣可透過 navigator.userAgent 進行檢測:
function is_weixin() {
var ua = navigator.userAgent.toLowerCase();
return ua.match(/MicroMessenger/i) == "micromessenger";
}
確認為微信環境後,可引入微信分享 JS-SDK 並配置分享參數:
<script type="text/javascript" src="/jslib/wx_share.js"></script>
<script>
var imgUrl = '<?php echo base_url("/images/per.png"); ?>';
var lineLink = 'https://www.baidu.com/';
var shareTitle = '我來給你送錢了';
var descContent = '折射率,你知道是啥?';
var timeline_title = 'timeline_title';
var appid = '';
</script>
<script>
function onBridgeReady() {
WeixinJSBridge.call('showOptionMenu');
}
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
} else {
onBridgeReady();
}
</script>
詳細流程請參考微信官方開發文檔。