實戰案例 - 微信平台之微信商城重點摘要(1)

只要是牽涉到公眾平台,並需要取得用戶信息的相關操作,不外乎兩大要素:openid 和 access_code。然而,在取得 openid 和 access_code 之前,還有一個很重要的敲門磚,就是 code,筆者稱之為「用戶同意授權碼」,其作用在識別用戶是否同意微信應用發起的「用戶公開訊息調用請求」。也就是說,當微信應用需要獲取用戶的公開資訊時,會先向用戶發起一個授權同意頁面,若用戶點擊同意,就會以網址列傳參的方式給應用端返回 code,若用戶不同意授權,就不帶上 code。而這一段在實作上,也可以採用「靜默授權」的方式取得授權碼。在實作上,取得「code」和「openid、access_code」是可以拆開的,這邊簡單示範一下透過 asp + js / jquery 來獲取用戶授權碼,其它開發環境的請自行靈活理解。

 

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="format-detection" content="telephone=no" />
<script type="text/javascript" src="/shop/templates/shop1/js/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {

    // 將網址列參數解析為程式碼需要的東西,這個例子是將 code 的值拆出來。
    function getQueryString(name) {  
        var r = location.search.substr(1).match(new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"));  

        if ( r != null) return unescape(decodeURI(r[2]));
        else return null;
    }

    // 取得用戶授權碼後,要返回的頁面,一般都會跟「發起用戶公開訊息調用請求」的頁面相同。
    // 同時也是官方網址所需要的參數
    var redirect_uri = location.href;

    // 微信官方取得用戶授權碼的網址
    var get_code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf7580d49be2667f5&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";

    var access_code = getQueryString("code");

    // 第一次載入本頁,勢必不會有 access_code,因此可以利用這個特性作頁面跳轉,將頁面轉到微信官方的網址,以獲取用戶同意授權碼。
    if ( access_code == null || access_code == "")
    {
        location.href = get_code_url;
    }
});
</script>
</head>
<body>
<%
‘向微信官方取得「用戶同意授權碼」之後,會將授權碼以網址傳參的方式返回
因此在接收授權碼的頁面,後台程式只要用 Request.QueryString() 就可以取得參數值

If (Len(Request.QueryString("code")) <= 0) Then
    Response.Write ("尚未获取")
Else
    Response.Write("Access Code = " & Request.QueryString("code"))

跳轉到「獲取用戶公開訊息的頁面」
Response.Redirect "2.asp?code=" & Request.QueryString("code")
%>
<% End If %>
</body>
</html>

 

實戰案例 - 微信平台之微信商城重點摘要(1)

上一篇:FATAL Fatal error during KafkaServerStable startup. Prepare to shutdown (kafka.server.KafkaServerSta


下一篇:JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面